跳转至

时序数据库

时间:2020-09-22 14:27:27

时序数据#

时序数据是随着时间持续产生的数据,如股票价格,天气情况(温度,适度和风力等),计量表(电表、水表等)数值。需要对数据进行一些聚合操作。数据组成如下:

  • 时间戳:数据产生时间。
  • 标签:键值对。数据源标签,用于区分数据。一个或多个。
  • 值:键值对。数据值。存储时间数据值。一个或多个。

以天气数据为例。间隔五秒钟读取一次数据。数据格式如下:

time: 时间戳
tag: <country,国家> <province,省份> <city,城市> <localtioncode,位置编码(全球唯一)>
value: <temperature,温度> <pm2_5, pm2.5> <wind:风力> <wind_direction:风向> ... 

每五秒有一条记录,每天有 24*60*60/5 = 17280 条记录。 当点位比较多且存储时间较长时数据量会很大。

时序数据库#

InfluxDB#

官网地址

InfluxDB 支持集群但社区版只支持单机部署。生态系统比较完善。不依赖第三方存储。有可视化工具。

  • Telegraf: 从第三方数据存储系统提取数据。
  • InfluxDB: 存储时序数据。
  • Chronograf: InfluxDB 的数据展示平台。
  • Kacapitor: 数据处理,可以用于异常数据监控等。

生态系统各组件指尖关系如下:

influxdb-eco

griddb#

官网地址

griddb 支持集群但社区版只支持单机部署。生态系统一般,不依赖第三方存储。基于内存,数据优优先存储于内存中。数据可视化需要使用 Grafana

druid#

官网地址

druid 支持集群,完全开源。数据可以存储在本地文件系统,S3,HDFS等。默认存储在本地文件系统。自带可视化工具。依赖 Zookeeper

支持从 Kafka、HDFS 、本地磁盘等读取数据。

支持SQL查询。

缺点:数据源和数据存储都依赖第三方,引入过多第三方组件,维护成本较高。

架构图如下:

TimescaleDB#

官网地址

数据存储依赖 PostgreSQL

Prometheus#

官网地址

依赖第三方存储。

架构图

总结#

期望找到一个完全开源、原生数据存储、支持集群的时序数据库。