人工智能 频道

时序数据库技术分析

  随着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云服务。

  典型时序数据库介绍及对比

  InfluxDB

  InfluxDB由Golang语言编写,系统性能、稳定性好,被广泛应用,是当前DB-engine热度排名领先的时序数据库,生态支持丰富全面。不过,InfluxDB采用MIT开源协议,开源版本没有集群功能,商业版本具备分布式集群、数据分级存储等功能,但价格不菲。

  OpenTSDB

  OpenTSDB是Apache开源软件,是在HBase的基础上开发的,底层存储是HBase,但其依据时序数据的特点做了一些优化。其最大的好处就是建立在Hadoop体系上,各种工具链成熟,但这也是它最大的缺点,因为Hadoop不是为时序数据打造的,导致其性能很一般,而且需要依赖很多组件,安装部署相当复杂。  

  图5 OpenTSDB系统架构  

  图6 OpenTSDB在HBase中存储数据模式

  5.3 TDengine

  TDengine不仅是一款时序数据库,而且还提供缓存、消息队列、数据订阅、流式计算等系列功能,是时序数据的全栈技术解决方案。而且它不依赖任何第三方软件,安装包只有1.5MB,使系统设计、安装、部署和维护都变得极为简单。

  图7 TDengine系统框图及全栈解决方案

  IoTDB

  Apache IoTDB是一体化收集、存储、管理与分析物联网时序数据的软件系统。Apache IoTDB采用轻量式架构,具有高性能和丰富的功能,并与Apache Hadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。

 

  图8 IoTDB系统架构图

  IoTDB独创采用了tree schema来对时序数据建模,该数据模型更符合工业物联网场景中的层级结构,但牺牲了一些标签灵活性。

  

  图9 IoTDB树状模式样例

  👇主流时序数据库对比

  数据来源:公开资料及实测分析

0
相关文章