1.可以按照以下需求自行选择合适的存储:
-
小而精,性能高,数据量较小(亿级): InfluxDB
-
简单,数据量不大(千万级),有联合查询、关系型数据库基础:timescales
-
数据量较大,大数据服务基础,分布式集群需求: opentsdb、KairosDB
-
分布式集群需求,olap实时在线分析,资源较充足:druid
-
性能极致追求,数据冷热差异大:Beringei
-
兼顾检索加载,分布式聚合计算: elsaticsearch
-
如果你兼具索引和时间序列的需求。那么Druid和Elasticsearch是最好的选择。其性能都不差,同时满足检索和时间序列的特性,并且都是高可用容错架构。
2.时序数据具有以下特点:
-
周期性采集设备的时序数据,对插入性能和稳定性要求高,可能发生乱序或者丢失数据的情况;更新和删除频次低;
-
时序数据量大,对存储压缩比敏感,希望冷热数据分级存储;
-
为了节省存储,通常会对高频时序数据降采样;
-
设备属性信息重复度高,修改频次低;
-
指标数据量大而变化小;
-
查询需求多样,如单设备最新值、单设备明细、单设备过滤聚集、多设备查询、多维查询、降采样、滑动窗口查询、设备状态演变图、特定模式识别、趋势预测、根因分析、阈值修正等。
3.时序数据库种类
3.1Timescale
这个数据库其实就是一个基于传统关系型数据库postgresql改造的时间序列数据库。了解postgresql的同学都知道,postgresql是一个强大的,开源的,可扩展性特别强的一个数据库系统。
于是timescale.inc开发了Timescale,一款兼容sql的时序数据库, 底层存储架构在postgresql上。 作为一个postgresql的扩展提供服务。其特点如下:
基础:
-
PostgreSQL原生支持的所有SQL,包含完整SQL接口(包括辅助索引,非时间聚合,子查询,JOIN,窗口函数)
-
用PostgreSQL的客户端或工具,可以直接应用到该数据库,不需要更改。
-
时间为导向的特性,API功能和相应的优化。
-
可靠的数据存储。
扩展:
-
透明时间/空间分区,用于放大(单个节点)和扩展
-
高数据写入速率(包括批量提交,内存中索引,事务支持,数据备份支持)
-
单个节点上的大小合适的块(二维数据分区),以确保即使在大数据量时即可快速读取。
-
块之间和服务器之间的并行操作
劣势:
-
因为TimescaleDB没有使用列存技术,它对时序数据的压缩效果不太好,压缩比最高在4X左右
-
目前暂时不完全支持分布式的扩展(正在开发相关功能),所以会对服务器单机性能要求较高
其实大家都可以去深入了解一下这个数据库。对RDBMS我们都很熟悉