首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >时序数据库应用_tsdb时序数据库

时序数据库应用_tsdb时序数据库

作者头像
全栈程序员站长
发布2022-11-10 15:27:43
发布2022-11-10 15:27:43
2.6K0
举报

大家好,又见面了,我是你们的朋友全栈君。

前言

mysql可能大家都用的比较多且普遍,最近1年在使用PostgreSql,其大体DML语句与mysql类似,只是部分DDL语句有些区别,写一篇文章给正在应用该数据库或者准备选型该数据库的朋友,分享下使用方式与心得

PostgreSql

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键触发器视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。 —— 引自搜索引擎百科

软件下载

数据库服务(各版本):https://www.postgresql.org/ftp/source/

可视化Client(推荐使用postico,比较好用):Postico首页、文档和下载 – PostgreSQL 客户端 – OSCHINA – 中文开源技术交流社区

语法

整体使用感觉是有mysql经验的朋友直接上手就可以,只不过有些特殊的语句我罗列下(常用)

1. 使用终端命令行客户端链接数据库

psql -h 数据库服务器ip -d 库名 -U 用户名

2.DDL部分指令

\c testdatabase 创建库 \dn 列出所有 \l 库列表 \dnS 列出所有模式 S代表各个schema \d tablename 列出表详情 类似于mysql的show create table

3.时序分片

— 建表语句 CREATE TABLE info( type varchar(15) NOT NULL, info varchar(20) NOT NULL, amount decimal(36, 18) NOT NULL, ts timestamp without time zone NOT NULL, CONSTRAINT info_ukey UNIQUE (type, info, ts) ) WITH (OIDS = FALSE) TABLESPACE default; — 时序+分片 SELECT create_hypertable(‘info’, ‘ts’, chunk_time_interval => interval ‘1 weeks’); SELECT add_dimension(‘info’, ‘type’, number_partitions => 5);

使用 create_hypertable 函数将 postgres 标准表转化为 hypertable create_hypertable 有三个参数【表名、分区列(一般为 TIMESTAMPTZ 类型)、时间间隔】

add_dimension函数在info表的type字段上添加5个分区的维度

两个语句共同作用的感觉可以抽象一下,像是切豆腐,横着按照1厘米切了N刀后,再竖着切了5刀

4.导出/入表

(1)以csv文件导出info表 \COPY (select * from info) TO /root/info.csv DELIMITER ‘,’ CSV HEADER (2)从csv文件导入info表 \COPY public.info FROM /root/info.csv DELIMITER ‘,’ CSV HEADER

备份还有一种方式,需要用到pg_dump

(1)导出testdatabase库下的public schema下的所有表的结构到/tmp/testdb_public.sql文件 (只导出结构,添加–s,代表schema) pg_dump “host=xxx.xx.xx.xx hostaddr=xxx.xx.xx.xx port=5432 user=postgres password=xxxxx dbname=testdatabase” –table=public.* –s > /tmp/testdb_public.sql;

(2)区别于(1),导出insert语句 pg_dump “host=xxx.xx.xx.xx hostaddr=xxx.xx.xx.xx port=5432 user=postgres password=xxxxx dbname=testdatabase” –table=public.info –column-inserts > /tmp/testdb_public_info.sql;

其他pg_dump相关的指令就不做列举了,需要的朋友可以搜一下,功能还是很强大的,但是需要注意的点是,针对不同的pg版本,可能导出内容不尽相同

结语

作为一款开源免费的数据库,在时序处理上表现是比较出色的,如果有针对于时间维度的比较重的表需要做一些优化,可以考虑引入时序数据库的选型,而且大体DML语句与mysql类似,只是部分DDL语句有些区别,希望文章对您有所帮助

原创,请勿转载,欢迎转发,分享知识,快乐工作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188838.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • PostgreSql
  • 软件下载
  • 语法
    • 1. 使用终端命令行客户端链接数据库
    • 2.DDL部分指令
    • 3.时序分片
    • 4.导出/入表
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档