时序数据库 vs 实时数据库,一文搞懂!
![时序数据库 vs 实时数据库,一文搞懂!](https://static001.geekbang.org/infoq/72/72c4717d08e039ddf32fbc8f85907c2c.jpeg)
从信息化到数字化,数据正从被存储的对象成为价值的创造者,工业数据更是驱动传统企业迈向智能制造的重要抓手。相较于其他领域,工业领域由于需要及时监控生产过程,减少生产中断带来的损失,所以对于数据的实时性要求更高。
在此背景下,实时数据库以及以 IoTDB 为代表的时序数据库,由于在保障海量工业数据的实时写入、存储、查询等方面发挥着重要作用,引得了越来越多的工业制造业企业关注,期望在数据管理层面有所建树,更好地助力企业数字化转型。
那么,实时数据库与时序数据库究竟有何区别与联系,二者后续又将如何发展?本文将详细解析这两种数据库的定义、区别与发展趋势。
一、实时数据库介绍
实时数据库的诞生主要是因为现代工业制造流程及大规模自动化的发展,导致大量的数据需要集成和存储。世界上第一款实时数据库是美国的 PI 系统(Plant Information System),即工厂信息化系统。
PI 系统包括采集器、内存数据库+实时处理、历史数据库、组态软件等组件。采集器主要负责从传感器、控制器中进行数据采集,并且把数据写入内存数据库里;内存数据库中结合了很多业务处理逻辑,也就是实时处理的部分,比如对测点的值进行范围判断、修正、告警的逻辑等,可将最新值和告警值传输给组态软件。
如果用户需要对测点采集的实时数据进行归档存储,则需要把内存数据库中的数据通过实时处理逻辑,写到历史数据库中。PI 系统的历史数据库主要采用成熟的关系型数据库存储大量数据,而内存数据库一般只存储每一个测点的最新值。
组态软件的主要功能是数据可视化。用户如果需要最新值和告警值,调用内存数据库中的数据即可;如果需要一个点位的历史变化趋势,则可以读取历史数据库中的数据。
![](https://static001.geekbang.org/infoq/67/677bc13636d57b9a5ea5c15e61036eaf.png)
之所以将 PI 系统称为实时数据库,是因为国内主要采购、使用其内存数据库+实时处理逻辑,以及历史数据库的组件部分,所以翻译为实时数据库。
也就是说,实时数据库本质是实时系统和数据库技术相结合的产物。它包括数据库,但不只是一个数据库,更是一个系统。
实时数据库是工厂底层控制网络与上层管理信息系统的桥梁。这类系统的目标是通过组态软件的可视化结果,在数据产生或更新后尽快地反馈、告警,并提供数据访问服务。
例如,组态软件绘制的工艺流程图涵盖物理现场的设备、管线及数据流向,可以动态地反应工业生产过程及测点上报的实时数值,并支持实时监控与告警弹窗。聚焦单一测点时,组态软件支持读取历史数据,给出数据变化的历史趋势图。
![](https://static001.geekbang.org/infoq/63/63bf3f4581c715c2f3a34dbd59d7337e.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
二、时序数据库介绍
时序数据库是一种专门管理时间序列数据,也就是带时间标签的数据的数据库,尤其适用于工业物联网场景。
时序数据主要由工业机器、设备的传感器实时产生。这些时序数据包括工程领域桥梁的支座位移、振动,车联网领域汽车的车速、发动机转数,能源领域发电风车的功率、风速等等。
工业监控需求中的设备数量很多,导致产生的时序数据数据量非常庞大,采集频次也非常高。因此在实时数据库之外,出现了专门解决时序数据管理难点的数据库,也就是时序数据库。
上面说美国诞生了第一个实时数据库,如今中国也涌现出很多高性能的时序数据库,比如技术发源于清华,国产全自研的 IoTDB。
对应到实时数据库的逻辑,时序数据库是和关系型数据库等价的,因此可以无缝替代实时数据库中的历史数据库组件。
相比实时数据库中的历史数据库,时序数据库的性能可以领先 1-2 个数量级,在写入时序数据吞吐量、时序数据空间占用的压缩比、时间维度相关的查询耗时等方向,都具备优势。
![](https://static001.geekbang.org/infoq/22/22183055cbcc73cceef415478901350b.png)
如果对标实时数据库,基于时序数据库去全新设计一套清晰的工业信息化系统,则需要在上游扩展采集器,将数据实时写到时序数据库中。
时序数据库一方面可以将最新数据和历史数据传输至组态软件,另一方面可以实现全量数据存储,即整合实时数据库中内存数据库+历史数据库两部分的逻辑。
实时数据库中的实时处理业务逻辑,一般会合并入组态软件。数据传输后,由组态软件的后端进行告警逻辑的判断,或通过适配时序数据库的可视化软件后端来做告警逻辑的判断,再到前端展示出来。
![](https://static001.geekbang.org/infoq/c1/c1b3bedafa1b2bf46a172be18b0f8425.png)
可见,时序数据库虽然自身并不是一个系统,但是具备跟周边功能组件对接的能力,能够通过软件集成,上游支持数据采集,下游支持数据的分析、监控、告警、可视化等应用,形成完整的时序数据管理解决方案。
![](https://static001.geekbang.org/infoq/d7/d7661f2c680215200af7eb865780b022.png)
三、性能应用对比
时序数据库和实时数据库的性能区别,主要有以下几点:
数据类型:时序数据库主要关注时序数据的处理,实时数据库可以处理时序数据以外的数据,重点关注广义上实时数据的更新。
数据架构:时序数据库通常使用专门针对时序数据的数据结构和存储技术,比如 IoTDB 使用的是自研的树形时序模型,以实现设备结构的直观对应,并结合列式存储文件格式 TsFile,实现海量时序数据的高压缩比和高效检索。实时数据库则支持通用的数据模型。
写入性能:时序数据库重视针对高通量、高并发的时序数据优化写入性能,比如 IoTDB 以列为整体进行写入,能够实现千万级写入吞吐,和高频数据的毫秒级接入。实时数据库则更侧重于工业数据整体的写入性能。
查询性能:时序数据库支持针对时序数据的特性查询与计算,例如 IoTDB 可支持降采样查询、最新点查询、时序分段查询等。实时数据库则注重实时查询和数据更新,例如实时查询在线用户的信息等。
数据分析能力:时序数据库通常与数据分析工具集成紧密,例如 IoTDB 涵盖内生机器学习节点 AINode,基于多类算法和自研模型,能够支持序列预测、异常预测等数据分析。实时数据库更侧重于实时数据处理。
扩展性:传统实时数据库多为主备部署架构,通常要求较高配置的机器,来追求单机的高性能;同时会对运行软件的稳定性要求较高,基本由高质量的代码来保证运行的稳定。而像时序数据库 IoTDB 实现的分布式架构,可以让系统轻松地实现水平扩展、秒级扩容;并且在保证稳定性的基础上,让数据库不再依赖昂贵的硬件和存储设备也能实现高可用,消除单点瓶颈/故障,大大降低了使用成本。
部署模式及协同性:随着本地储存工业数据的成本逐渐增加以及云服务的成熟,工业数据上云并实现端边云数据灵活同步的必要性逐步显现。以 IoTDB 为代表的时序数据库拥抱上云大趋势,通过统一的数据文件格式实现端边云数据协同同步,充分利用了边云算力资源。而传统实时数据库多采用私有化部署模式,运维成本往往较为高昂。
四、总结
随着数字化转型进入深水区以及物联网的加速发展,工业数据的价值愈发受到关注,实时数据库与时序数据库都迎来了广阔的应用前景。
二者的相通之处在于都是围绕工业场景数据提供解决方案,和“时间”、“实时”的概念紧密耦合;不同之处在于关注的业务侧重点不同,从而产生了不同的技术路线。
两类产品尽管所走的技术路线不同,但可以预见的是,二者未来在使用场景上有更多融合的可能性,可能会有结合实时数据库与时序数据库特性的融合产品出现。
评论