最近工作上初次接触TimescaleDB,因初次接触,不是很了解,所以多方进行了查阅。
TimescaleDB是由一群博士创立的公司Timescale Inc.所研发的。这个团队专注于构建高性能的时间序列数据库解决方案。TimescaleDB最初是在2017年4月作为PostgreSQL的一个扩展被开源发布的,它设计用于处理大量的时间序列数据,这类数据常见于物联网(IoT)、金融、工业监控和其他需要记录随时间变化数据的领域。
TimescaleDB通过在PostgreSQL的基础上增加时间序列功能,如自动数据分片、高效的时间序列数据压缩和查询优化,使得用户能够以插件化的方式利用其功能,同时还能享受到PostgreSQL的强大特性和生态系统。
Timescale Inc.持续维护和开发TimescaleDB,同时也提供商业支持和服务给企业客户。如果您对TimescaleDB感兴趣或者想要了解更多细节,可以访问他们的官方网站:www.timescale.com。
TimescaleDB具有如下特点:
-
基于时序优化
-
自动分片(自动按时间、空间分片 (chunk))
-
全 SQL 接口
-
支持垂直于横向扩展
-
支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器 ID,用户 ID 等)
-
支持多个 SERVER,多个 CHUNK 的并行查询。分区在 TimescaleDB 中被称为 chunk。
-
自动调整 CHUNK 的大小
-
内部写优化(批量提交、内存索引、事务支持、数据倒灌)。
内存索引,因为 chunk size 比较适中,所以索引基本上都不会被交换出去,写性能比较好。
数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的 chunk,timescaleDB 允许这样的事情发生 (可配置)。
-
复杂查询优化(根据查询条件自动选择 chunk,最近值获取优化 (最小化的扫描,类似递归收敛),limit 子句 pushdown 到不同的 server,chunks,并行的聚合操作)
-
利用已有的 PostgreSQL 特性(支持 GIS,JOIN 等),方便的管理(流复制、PITR)
-
支持自动的按时间保留策略(自动删除过旧数据)
另有几篇对技术细节介绍的比较深的帖子供翻阅和了解。
https://zhuanlan.zhihu.com/p/655794209
https://zhuanlan.zhihu.com/p/672345360
https://blog.csdn.net/iiothub/article/details/136553212