• 已删除用户
Administrator
发布于 2022-11-18 / 4 阅读
0

时序数据库 TSDB

时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

时间序列数据库广泛应用于物联网(IoT)系统 ,企业能源管理系统(EMS),生产安全监控系统,电力检测系统等行业场景的专业数据库产品,提供百万高效写入,高压缩比低成本存储、预降采样、插值、多维聚合计算,查询结果可视化功能;解决由于设备采集点数量巨大,数据采集频率高,造成的存储成本高,写入和查询分析效率低的问题

概念

  • 度量 Metric
    Metric 类似关系型数据库里的表(Table),代表一系列同类时序数据的集合,例如为空气质量传感器建立一个 Table,存储所有传感器的监测数据。

  • 标签 Tag
    Tag 描述数据源的特征,通常不随时间变化,例如传感器设备,包含设备 DeviceId、设备所在的 Region 等 Tag 信息,数据库内部会自动为 Tag 建立索引,支持根据 Tag 来进行多维检索查询;Tag 由 Tag KeyTag Value 组成,两者均为 String 类型。

  • 时间戳 Timestamp
    Timestamp 代表数据产生的时间点,可以写入时指定,也可由系统自动生成;

  • 量测值 Field
    Field 描述数据源的量测指标,通常随着时间不断变化,例如传感器设备包含温度、湿度等 Field;

  • 数据点 Data Point
    数据源在某个时间产生的某个量测指标值(Field Value)称为一个数据点,数据库查询、写入时按数据点数来作为统计指标;

  • 时间线 Time Series
    数据源的某一个指标随时间变化,形成时间线,Metric + Tags + Field 组合确定一条时间线;针对时序数据的计算包括降采样、聚合(sum、count、max、min 等)、插值等都基于时间线维度进行;

场景

时序数据库的应用场景在物联网和互联网 APM(应用性能管理)等场景应用比较多,下面是列举了一些时序数据库的应用场景,但不是全部:

  • 物联网
    电梯、锅炉、机械、水表等各种联网设备;

  • 互联网
    服务器/应用监测、用户访问日志、广告点击日志;

  • 电力行业
    智能电表、电网、发电设备的集中监测;

  • 交通行业
    实时路况、路口流量监测、卡口数据;

  • 金融行业
    交易记录、存取记录、ATM、POS 机监测;

  • 公共安全
    上网记录、通话记录、个体追踪、区间筛选;

特点

具有不变性、唯一性、时间排序性。

  • 时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

  • 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

数据写入的特点

  • 写入平稳、持续、高并发高吞吐
    时序数据的写入是比较平稳的,这点与应用数据不同,应用数据通常与应用的访问量成正比,而应用的访问量通常存在波峰波谷。时序数据的产生通常是以一个固定的时间频率产生,不会受其他因素的制约,其数据生成的速度是相对比较平稳的。

  • 写多读少
    时序数据上 95%-99%的操作都是写操作,是典型的写多读少的数据。这与其数据特性相关,例如监控数据,你的监控项可能很多,但是你真正去读的可能比较少,通常只会关心几个特定的关键指标或者在特定的场景下才会去读数据。

  • 实时写入最近生成的数据,无更新
    时序数据的写入是实时的,且每次写入都是最近生成的数据,这与其数据生成的特点相关,因为其数据生成是随着时间推进的,而新生成的数据会实时的进行写入。数据写入无更新,在时间这个维度上,随着时间的推进,每次数据都是新数据,不会存在旧数据的更新,不过不排除人为的对数据做订正。

数据存储的特点

  • 数据量大
    拿监控数据来举例,如果我们采集的监控数据的时间间隔是 1s,那一个监控项每天会产生 86400 个数据点,若有 10000 个监控项,则一天就会产生 864000000 个数据点。在物联网场景下,这个数字会更大。整个数据的规模,是 TB 甚至是 PB 级的。

  • 冷热分明
    时序数据有非常典型的冷热特征,越是历史的数据,被查询和分析的概率越低。

  • 具有时效性
    时序数据具有时效性,数据通常会有一个保存周期,超过这个保存周期的数据可以认为是失效的,可以被回收。一方面是因为越是历史的数据,可利用的价值越低;另一方面是为了节省存储成本,低价值的数据可以被清理。

  • 多精度数据存储
    在查询的特点里提到时序数据出于存储成本和查询效率的考虑,会需要一个多精度的查询,同样也需要一个多精度数据的存储。

对比

先上个最新的时序数据库排行榜,数据来自权威的DB-Engines

一共 38 个时序数据库参与了排名,其中第 9 名DolphinDB、第 13 名TDengine、第 19 名Apache IoTDB、第 35 名Alibaba Cloud TSDB属于国产数据库。除开 3 个 0 分的并列 36 名,Alibaba Cloud TSDB 竟然垫底了。当然也有许多优秀也有又有的国产数据库未上榜,如腾讯的CTSDB等。

开源 TSDB

InfluxDB

排名第一、关注度最高、社区活跃的开源时序数据库。官方是这样介绍 InfluxDB 的(翻译后):

InfluxDB 是一个从底层一步一步成长为能处理高写入,高查询的时序数据库,它专门针对时序数据做了优化,让其更高性能,他可以用来存储任何时序数据,包括DevOps的监控应用指标物联网传感器数据,并实时分析。

OpenTSDB

OpenTSDB 是可扩展的分布式时序数据库,底层依赖 HBase。作为基于通用存储开发的时序数据库典型代表,起步比较早,在时序市场的认可度相对较高。

国产 TSDB

DolphinDB

DolphinDB是由浙江智臾科技有限公司研发的一款高性能分布式时序数据库,集成了功能强大的编程语言和高容量高速度的流数据分析系统,为海量结构化数据的快速存储、检索、分析及计算提供一站式解决方案,适用于量化金融及工业物联网等领域。

TDengine

TDengine 是一款 涛思数据 开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。有 3 个版本:社区版、企业版、云服务版本。

Apache IoTDB

IoTDB 是清华大学主导的 Apache 孵化项目,是一款专为物联网时序数据打造的数据库,提供数据采集、存储、分析的功能。

IoTDB 提供端云一体化的解决方案,在云端,提供高性能的数据读写以及丰富的查询能力,针对物联网场景定制高效的目录组织结构,并与 Apache Hadoop、Spark、Flink 等大数据系统无缝打通;

在边缘端,提供轻量化的 TsFile 管理能力,端上的数据写到本地 TsFile,并提供一定的基础查询能力,同时支持将 TsFile 数据同步到云端。

TsFile 是为物联网设备时序数据存储定制的文件格式。

阿里 TSDB

阿里云有两个版本的时序数据库:

  • 时序数据库 InfluxDB® 版
    官方是这样介绍的:

    专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控应用指标IoT传感器上的数据。

不得不说,确实是基于InfluxDB®的版本,官方介绍都是如此的相似。®这个图标应该是指InfluxDB授权吧,也就是云厂商通用的做法,授权后开源产品上云进行商业化。

官网中也将阿里云的InfluxDB®版和开源版本InfluxDB做了对比,摘了以下两个优化点:

根据规格和场景提供最优的参数配置,提供完善的进程恢复机制以及全自动的 ECS 故障转移机制。另外,具备比开源版本InfluxDB更完善的内存管理机制,实现了全自动 Load Shedding,从容应对瞬时冲击。具有磁盘即将写满的自动保护机制。
提供了图形化的控制台,方便进行基本的管理操作,避免学习 InfluxDB 复杂的基本管理命令。

  • 时间序列数据库 TSDB
    高度兼容OpenTSDB协议。2022 年 02 月停止售卖~~~!这可是上了排行榜的呀,咋说停止就停止了。。。

腾讯 CTSDB

时序数据库 CTSDB(TencentDB for CTSDB)是腾讯云推出的一款分布式、可扩展、支持近实时数据搜索与分析的时序数据库。该数据库为非关系型数据库,提供高效读写、低成本存储、强大的聚合分析能力、实例监控以及数据查询结果可视化等功能。整个系统采用多节点多副本的部署方式,有效保证了服务的高可用性和数据的高可靠性。

引用官网的宣传语,即可明白 CTSDB 的优势方向:

极高性能写入、查询、聚合,天生适用IoT日志存储等场景。