万物互联时代,工业物联网产生的数据量比传统的信息化要多数千倍甚至数万倍,并且是实时采集、高频度、高密度,动态数据模型随时可变。传统数据库在对这些数据进行存储、查询、分析等处理操作时捉襟见肘,迫切需要一种专门针对时序数据来做优化的数据库系统,即时间序列数据库。
时间序列数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等特点,可以基于时间区间聚合分析和高效检索,广泛应用在物联网、经济金融、环境监控、工业制造、农业生产、硬件和软件系统监控等场景。
▲DB-Engines最新发布的时序数据库排名表
根据国际知名网站DB-Engines数据,时序数据库在过去24个月内排名高居榜首,且远高于其他类型的数据库,可见业内对时序数据库的需求迫切。相应的时序数据库产品近年来也快速发展,各大互联网企业包括谷歌、阿里巴巴、亚马逊都推出自己的时序数据库,业界使用较多的时序数据库主要有如下几种:
1. InfluxDB
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics,loT传感器数据和实时分析数据。
作为目前开源排名最高的时序数据库,InfluxDB支持数据存储策略(RP)和数据归档(CQ),能够实时查询,数据在写入时被索引后就能够被立即查出,内置HTTP接口,安装管理很简单,并且读写数据非常高效。
2. Kdb+
kdb+/q被官方称为世界上最快的时间序列数据库,它使用统一的数据库处理实时数据和历史数据,同时具备CEP(复杂事件处理)引擎、内存数据库、磁盘数据库等功能。列式存储的特性,使得对于某个列的统计分析操作异常方便。
与一般数据库或大数据平台相比,kdb+/q具有更快的速度和更低的总拥有成本,非常适合海量数据处理,主要被用于海量数据分析、高频交易、人工智能、物联网等领域。在延迟性上有着苛刻要求的金融领域,kdb+有着独特的优势。
3. Prometheus
Prometheus是一套开源的系统监控报警框架,由工作在SoundCloud的Google前员工在2012年创建,作为社区开源项目进行开发,2015年正式发布,并在次年正式加入Cloud Native Computing Foundation。
作为新一代的监控框架,Prometheus具备强大的多维度数据模型,有多种可视化图形界面,使用pull模式采集时间序列数据,可以采用push gateway的方式把时间序列数据推送至Prometheus server端。
4. Graphite
Graphite是一个开源实时的、显示时间序列度量数据的图形系统。Graphite并不收集度量数据本身,而是像一个数据库,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。
Graphite支持内建的Web界面,它允许用户浏览度量数据和图。它由多个后端和前端组件组成。后端组件用于存储数值型的时间序列数据,前端组件则用于获取指标项数据并根据情况渲染图表。
5. TimescaleDB
TimescaleDB是唯一支持完整SQL的开放源代码时间序列数据库,已针对支持全面SQL的快速提取和复杂查询进行了优化。它基于PostgreSQL,并且为时间序列数据提供了最好的NoSQL和Relational世界。
TimescaleDB使开发人员和组织能够更多地利用其功能:分析过去,了解现在和预测未来。在查询层面统一时序数据和关系数据可消除数据孤岛,并使演示和原型更容易实现。可扩展性和完整的SQL接口的结合赋予员工提出数据问题。
6. 阿里云TSDB
作为我国科技公司的代表,阿里云时序数据库也入围了DB-Engines榜单。TSDB是一种集时序数据高效读写,压缩存储,实时计算能力为一体的数据库服务,可广泛应用于物联网和互联网领域,实现对设备及业务服务的实时监控,预测告警。
TSDB具备秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样、插值、多维聚合计算、可视化查询结果等功能,解决由设备采集点数量巨大、数据采集频率高造成的存储成本高、写入和查询分析效率低的问题。