什么是时序数据
时序数据是随时间不断产生的一系列数据,例如持续监控的气象变化数据、股市交易记录、应用监控数据等,通常一个时序数据点可以由时序指标(metric)+ 一组标签(tags)+ 数据产生时间(timestamp)三部分唯一确定。
时序数据更适合体现数据“变化”的过程价值。如果在时间坐标中将这些数据点连成线,过往的数据可以形成多纬度报表,揭示数据的趋势性、规律性,捕获异常;未来的数据可以建立数据模型、做统计分析,实现预测和预警。
时序数据应用场景
随着5G/IoT技术的发展,数据呈爆炸式增长,其中物联网与应用性能监控等是时序数据最典型的应用领域,覆盖物联网、车联网、智能家居、工业互联网、应用性能监控等常见的应用场景。
图一 时序数据应用场景
时序数据的特征及挑战
在典型的物联网与应用性能监控等时序数据应用场景里,数据产、访问都有比较明显的规律,有很多共同的特征,相比当前互联网典型的应用特征有比较大的区别。
结合时序数据的特征,要满足大规模时序数据存储需求,至少面临如下的几个核心挑战:
- 高并发高吞吐写入:在一些大规模的应用性能监控、物联网场景,海量的设备持续产生时序数据,例如某CDN内容分发网络系统,3000+台服务器,每秒/每十秒采集超100个系统指标和业务指标,每秒的时序数据点数达到数十万时间点,需要数十台机器的集群规模来支撑全量的业务写入;时序数据存储需要解决大规模集群的横向扩展,高性能平稳写入的需求。
- 高效的时序数据查询分析:在典型的监控场景,通常需要对长周期的数据进行查询分析,比如针对某些指标最近1天、3天、7天、1个月的趋势分析、报表等;这些查询都需要扫描大量的集群数据才能拿到结果,同时查询的结果集也可能非常大;时序数据存储需要支持多维时间线检索、并具备流式处理、预计算等能力,才能满足大规模应用监控、物联网业务场景的典型查询需求,并且针对时序大查询要最小化对写入的影响。
- 低成本的时序数据存储:某家庭安防场景,超千万安防设备,每天就产生近百GB的视频切片元数据指标,如果要保存一年的运行数据就需要PB级的数据存储规模;由于数据规模巨大,对存储的低成本要求很高,另外时序数据的冷热特征明显。时序数据存储需要充分利用好时序数据量大、冷热访问特征明显、做好计算、存储资源的解耦,通过低成本存储介质、压缩编码、冷热分离、高效TTL等技术将数据存储成本降低到极致。
- 简单便捷的生态协同:在物联网、工业互联网等场景,时序数据通常有进一步做运营分析处理的需求,在很多情况下时序数据只是业务数据的一部分,需要与其他类型的数据组合来完成查询分析;时序数据存储需要能与生态BI分析工具、大数据处理、流式分析系统等做好对接,与周边生态形成协同来创造业务价值。
时序数据库的现状和发展
时序数据库结合时序数据的特征,尝试解决时序数据存储在高写入吞吐、横向扩展、低成本存储、数据批量过期、高效检索、简单访问与时序数据计算等方面面临的挑战。进入2010年后,针对时序数据存储设计的数据库相继诞生,并且时序数据库的增长趋势、关注热度持续领先,国产化进程不断加快。
➢ 时序数据库关注度日趋火热,未来还有更大空间
在DB-Engine排行榜上,我们可以看到时序数据库在近两年在DB-Engine上是关注度上升最快的数据库类型。
图2时序数据库关注热度(数据来源:https://db-engines.com/en/ranking_categories)
➢ 时序数据库处于百花齐放,各家时序数据正在深耕各自领域
图3 时序数据库热度排名(数据来源:DB-engines)
图4 时序数据库发展简史
经过多年发展,时序数据库大致经历了几个阶段:
第一代时序数据库:基于关系型数据库的简单存储。代表:TimescaleDB,基于PostgreSQL关系数据库构建。
第二代时序数据库:依赖与Hadoop生态的通用分布式存储系统。代表:OpenTSDB(底层使用HBase),KairosDB(底层使用 Cassandra)。
第三代时序数据库:对高性能,低成本有强需求,需要针对时序领域特别专门设计。代表:InfluxDB,IoTDB和TDengine等。
➢ 数据库产品国产化进程加快,大厂纷纷布局
包括TDengine(涛思)、IoTDB(清华)、DolphinDB(智臾科技)等优秀的国内时序数据库异军突起,自主可控成为国内华为、阿里等厂商布局时序数据库场景的重要考量,华为时序数据库内化InfluxDB和IoTDB,阿里自研TSDB时序引擎,并提供基于InfluxDB的阿里云TSDB for InfluxDB,腾讯也推出了TencentDB for CTSDB云服务。
典型时序数据库介绍及对比
5.1 InfluxDB
InfluxDB由Golang语言编写,系统性能、稳定性好,被广泛应用,是当前DB-engine热度排名第一的时序数据库,生态支持丰富全面。不过,InfluxDB采用MIT开源协议,开源版本没有集群功能,商业版本具备分布式集群、数据分级存储等功能,但价格不菲。
5.2 OpenTSDB
OpenTSDB是Apache开源软件,是在HBase的基础上开发的,底层存储是HBase,但其依据时序数据的特点做了一些优化。其最大的好处就是建立在Hadoop体系上,各种工具链成熟,但这也是它最大的缺点,因为Hadoop不是为时序数据打造的,导致其性能很一般,而且需要依赖很多组件,安装部署相当复杂。
图5 OpenTSDB系统架构
图6 OpenTSDB在HBase中存储数据模式
5.3 TDengine
TDengine不仅是一款时序数据库,而且还提供缓存、消息队列、数据订阅、流式计算等系列功能,是时序数据的全栈技术解决方案。而且它不依赖任何第三方软件,安装包只有1.5MB,使系统设计、安装、部署和维护都变得极为简单。
图7 TDengine系统框图及全栈解决方案
5.4 IoTDB
Apache IoTDB是一体化收集、存储、管理与分析物联网时序数据的软件系统。Apache IoTDB采用轻量式架构,具有高性能和丰富的功能,并与Apache Hadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。
图8 IoTDB系统架构图
IoTDB独创采用了tree schema来对时序数据建模,该数据模型更符合工业物联网场景中的层级结构,但牺牲了一些标签灵活性。
图9 IoTDB树状模式样例
👇主流时序数据库对比
数据来源:公开资料及实测分析