TimescaleDB是基于PostgreSQL数据库开发的一款时序数据库,以插件化的形式打包提供,随着PostgreSQL的版本升级而升级,不会因为另立分支带来麻烦。
TimescaleDB架构
数据自动按时间和空间分片(chunk)
TimescaleDB具有以下特点
1.基于时序优化
2.自动分片(自动按时间、空间分片(chunk))
3.全SQL接口
4.支持垂直于横向扩展
5.支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器ID,用户ID等)
6.支持多个SERVER,多个CHUNK的并行查询。分区在TimescaleDB中被称为chunk。
7.自动调整CHUNK的大小
8.内部写优化(批量提交、内存索引、事务支持、数据倒灌)。
内存索引,因为chunksize比较适中,所以索引基本上都不会被交换出去,写性能比较好。
数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的chunk,timescaleDB允许这样的事情发生(可配置)。
9.复杂查询优化(根据查询条件自动选择chunk,最近值获取优化(最小化的扫描,类似递归收敛),limit子句pushdown到不同的server,chunks,并行的聚合操作)
10.利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流复制、PITR)
11.支持自动的按时间保留策略(自动删除过旧数据)
示例代码
Creatingahypertable
-- We start by creating a regular SQL tableCREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL);-- Then we convert it into a hypertable that is partitioned by timeSELECT create_hypertable('conditions', 'time');
评论