从IoTDB的发展回顾时序数据库演进史

bdca15c9e34b058c65c23b3983c1ca8b.jpeg

面向工业物联网时代,以 IoTDB 为代表的时序数据库加速发展。

时序数据的主要产生来源之一是设备与传感器,具有监测点多、采样频率高、存储数据量大等多类不同于其他数据类型的特性,从而导致数据库在实现高通量写入、存储成本、实时查询等多个维度存在管理难点。针对这些特性与难点,专门针对时序数据管理构建的时序数据库也在逐步成熟。

以 IoTDB 为代表的国产时序数据库面向工业物联网时代,时序数据的主要应用场景与痛点,正在逐步建立稳定、高效、协同、完善的时序数据管理解决方案,希望打破技术垄断,解决基础软件“卡脖子”难题

01

时序数据管理的早期方案

(1)最早的“时序数据库”:RRDtool

时序数据库的起源可以追溯到 20 世纪 70 年代,随着工业控制和 SCADA 系统的兴起,大量的时序数据产生,于是需要一套完整的存储与处理方案。而 1999 年出现的 RRDtool(Round Robin Database Tool)最早提出了专门面向时序数据存储、处理的方法。

RRDtool 命名中提到的 Round Robin 其实是一种存储数据的方式,使用固定大小的存储空间,并有一个指针指向数据库中最新数据的位置。如果将这个固定的存储空间想象为一个类似时钟的圆盘,上面有很多代表数据存储位置的刻度,指针就可以看做像时针/分针一样,是一条从圆盘中心指向刻度的直线。

就像时钟可以不停转动一样,RRDtool 中的指针也可以一直移动,在存储空间足够的情况下,不存在无法存储新数据的问题;而因为数据存储空间是固定的,当所有的空间都存满了数据,就会覆盖最老的数据。

(2)RRDtool 的创新与不足

从这样的设计就可以看出,RRDtool 的存储方式具有明确的时间属性,所以它适合存储时序数据,它绘制出的图类型也非常契合时序数据的属性,即以时间为横轴,以数值为纵轴的折线演变,强化了时序数据“以时间为第一概念”的数据特性。

同时,因为 RRDtool 的存储空间大小是已经被定义好的,当空间存储满后,它将从指针的开头开始重新存储,数据集不会增大,所以存储空间大小不需维护

然而,这类数据库也能够很明显的看到它的问题。首先,因为存储空间的手动设定,RRDtool 的存储能力难以扩展,在数据量逐渐增多的情况下,很难覆盖历史数据,实现时序数据的“应存尽存”。其次,RRDtool 的数据读取功能较弱,缺乏针对时间维度的查询优化,处理的数据模型也较为单一,通常是内嵌在监控系统中。最后,RRDtool 仅支持单机模式,未覆盖分布式管理的需求。

02

时序数据库发展期:

针对特征,优化性能

(1)从 OpenTSDB 到 InfluxDB

随着大数据的发展,时序数据爆发式增长,已有方案逐渐不能满足需求,在 2010 年之后,出现了第二类产品,首先是以 OpenTSDB 为代表的基于分布式存储的时序数据库。

这类时序数据库在继承通用分布式存储的基础上,扩展了时序数据的语义,并针对时序数据的进行了查询、处理等优化。如 OpenTSDB 底层依赖于 HBase 集群存储,根据时序的特征对数据进行压缩,节省存储空间;对时序数据的常用查询进行封装,提供数据聚合、过滤等操作。

而 OpenTSDB 存在的部署复杂和维护成本高等问题,促进了低成本的垂直型时序数据库的诞生,也就是以 InfluxDB 为首的时序数据库。

这类时序数据库的目标场景是互联网的服务监控、运维等场景,拥有更灵活的数据模型,以标签模型对监控项进行管理。相对于 OpenTSDB 需要配置 Java 环境和 HBase 环境,InfluxDB 没有依赖,大大减少了开发与运维成本,易于部署和维护。

同时,Influxdb 针对时序数据特性进行了存储引擎、查询引擎的重新设计,使得读写性能、易用性相比 OpenTSDB 获得了明显提升,如 InfluxDB 的采用类似 LSM Tree 的 TSM Tree存储结构,引入了 series-key 的概念,根据时间特征对数据实现了很好的分类,减少冗余存储,提高数据压缩率。

(2)时序数据库下一步发展挑战

上面提到的以 InfluxDB 为代表的时序数据库产品,在监控场景时序数据的多个管理痛点,如读写性能、存储成本、特性查询、部署运维等多个方向均实现了性能突破,并结合云服务、微服务等其他发展趋势,正在进一步拓宽其集成链路与适用场景。

然而,InfluxDB 主要面向云端服务监控,并且重点面向近期几个月的数据。但在时序数据大规模产生的工业物联网场景中,数据往往需要需要管理数年、甚至数十年之久,且需要分布式部署。Influxdb 目前仅单机版开源,难以管理如此大的数据量,且随着存储时长的增加,查询性能会大幅下降

在工业场景中,时序数据的管理还具有一些行业特点,数据大多是从端侧设备产生出来的,这些数据首先会服务于工厂的应用管理,所以它们会首先传到工厂内部的边缘网关,再传输到中心侧的数据库去支持监控、告警等服务。边缘侧网络资源、环境配置往往有限,此类时序数据库产品部署的带宽成本较高,对于数据库多终端之间同步传输的运维压力也较大

03

时序数据库的未来方向:

实现工业物联网场景的“端-边-云”协同

(1)工业物联网场景的端边云协同解决方案

面向工业物联网时代,国产自研的时序数据库产品也开始发展、成熟,试图打破垄断。以 IoTDB 为代表的新的国产时序数据库旨在将 OT 和 IT 结合起来,提供完整的工业物联网时序数据解决方案,实现“端-边-云协同”,即需要时序数据库在端侧、边侧、云侧等不同资源下都能够适配,并且运行良好,可以进行数据管理和分析,同时在数据流转的过程中支持稳定、高效、低运维成本的数据传输方案

这一类时序数据库不但可以实现千万级数据写入、高压缩比数据存储、集群部署高可用等性能,同时通过独特的时序数据存储文件格式,实现了数据一次处理,即可端边云共用的新形态。

以 IoTDB 为例,它在发送端可将数据持久化为文件格式,利用边缘端的计算能力,将数据进行深度编码压缩。当文件在端侧形成时,即可将其直接传输到接收端,而无需将原始数据传输。而在接收端,可将收到的文件直接加载至系统中,无需将数据解码和重新写入。

同时,通过“端-边-云”数据模式的自动识别,IoTDB 实现了低流量数据同步方案。因此可使底层数据文件格式贯穿端侧、边侧、云侧,支持可插拔的文件级同步,充分利用边缘计算能力,缓解云侧计算压力,有效节省网络流量、云端计算资源与运维成本

(2)时序数据库端边云场景应用方向

随着工业 4.0 和数字化时代的到来,结合国家工业升级转型战略的实施,新一代的时序数据库产品开始深入的帮助工业企业实现深度数字化转型。

目前,以 IoTDB 为代表的该类时序数据库广泛应用于能源电力、石油化工、钢铁冶炼、航空航天、轨道交通、智能工厂、车联网等国民经济核心产业,支持千万级设备写入、每日过亿条新增数据、TB 级历史数据存储需求,并实现如电力行业中“电厂侧-省域侧-中心侧”、制造行业中“传感器侧-厂站侧-基地侧-集团侧”的“端-边-云”数据同步,构建单平台全生命周期与跨平台端边云协同的时序数据解决方案。

IoTDB 详细介绍参见:

时序数据库IoTDB:功能详解与行业应用

9e84640ffd47fa0500164d969cc85281.gif

4e587cb9d9a6799766715cb725b02cc2.jpeg

2caeba083c618f919f41757503a9790e.jpeg

2419f477c705df7104b965cead906886.png

384b1d28ee34e97092451128700106fd.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第G2周:人脸图像生成(DCGAN)

第G2周:人脸图像生成(DCGAN) 第G2周:人脸图像生成(DCGAN)一、前言二、我的环境三、代码实现1、导入第三方库2、设置超参数3、导入数据 四、定义模型4.1 初始化权重4.2 定义生成器4.3 定义鉴别器 五、训练模…

2024年蓝桥杯40天打卡总结

2024蓝桥杯40天打卡总结 真题题解其它预估考点重点复习考点时间复杂度前缀和二分的两个模板字符串相关 String和StringBuilderArrayList HashSet HashMap相关蓝桥杯Java常用算法大数类BigInteger的存储与运算日期相关考点及函数质数最小公倍数和最大公约数排序库的使用栈Math类…

Go语言图像处理实战:深入image/color库的应用技巧

Go语言图像处理实战:深入image/color库的应用技巧 引言image/color库基础颜色模型简介颜色类型和接口 image/color库实际应用基本颜色操作创建颜色颜色值转换颜色比较 颜色转换与处理与image库结合使用 性能优化和高级技巧性能考量避免频繁的颜色类型转换使用并发处…

web服务器是如何运行的?tomcat基本原理

tomcat基本流程 tomcat在启动时将webapps下的每个项目中的web.xml读取,获取相关信息。tomcat只关心Servlet 程序、Filter 过滤器、Listener 监听器,不关心其他类。 tomcat接收到请求后会将请求报文转换成一个httpServletRequest对象,包含请求…

【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。

操作环境: MATLAB 2022a 1、算法描述 1. 16APSK调制解调 16APSK (16-ary Amplitude Phase Shift Keying) 是一种相位调制技术,其基本思想是在恒定幅度的条件下,改变信号的相位,从而传送信息。 - 调制:在16APSK中&am…

在vue和 js 、ts 数据中使用 vue-i18n,切换语言环境时,标签文本实时变化

我的项目需要显示两种语言(中文和英文),并且我想要切换语言时,页面语言环境会随之改变,目前发现,只能在vue中使用$t(‘’)的方式使用,但是这种方式只能在vue中使用,而我的菜单文件是定义在js中,…

gpt系列概述——从gpt1到chatgpt

GPT建模实战:GPT建模与预测实战-CSDN博客 OpenAI的GPT(Generative Pre-trained Transformer)系列模型是自然语言处理领域的重要里程碑。从2018年至2020年,该公司相继推出了GPT-1、GPT-2和GPT-3,这些模型在文本生…

CTFshow电子取证——内存取证1

关于内存与注册表 内存中的注册表项 当Windows操作系统启动时,它会将注册表的部分数据加载到内存中,以便系统和应用程序可以快速地访问这些信息。这些数据在内存中可以更快地被读取和修改,以便系统能够动态地调整其行为和配置。 系统性能和…

工业相机飞拍功能的介绍(转载学习)

转载至: https://baijiahao.baidu.com/s?id1781438589726948322&wfrspider&forpc

办公软件巨头CCED、WPS迎来新挑战,新款办公软件已形成普及之势

办公软件巨头CCED、WPS的成长经历 CCED与WPS,这两者均是中国办公软件行业的佼佼者,为人们所熟知。 然而,它们的成功并非一蹴而就,而是经过了长时间的积累与沉淀。 CCED,这款中国大陆早期的文本编辑器,在上…

【vue】购物车案例优化

对 购物车案例 进行优化 用watch实现全选/取消全选用watch实现全选状态的检查用computed计算总价格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

014:vue3 van-list van-pull-refresh实现上拉加载,下拉刷新

文章目录 1. 实现上拉加载&#xff0c;下拉刷新效果2. van-list&#xff0c;van-pull-refresh组件详解2.1 van-list组件2.2 van-pull-refresh组件 3. 完整案例4. 坑点&#xff1a;加载页面会一直调用加载接口 1. 实现上拉加载&#xff0c;下拉刷新效果 通过下拉刷新加载下一页…

淘宝扭蛋机小程序:扭出惊喜,乐享购物新体验

在快节奏的现代生活中&#xff0c;人们总是在寻找新鲜、有趣的娱乐方式。淘宝扭蛋机小程序应运而生&#xff0c;为您带来前所未有的购物与娱乐结合新体验。在这里&#xff0c;每一次的扭动都充满惊喜&#xff0c;每一次的点击都带来乐趣&#xff0c;让您在购物的同时&#xff0…

4.Labview簇、变体与类(上)

在Labview中&#xff0c;何为簇与变体&#xff0c;何为类&#xff1f;应该如何理解&#xff1f;具体有什么应用场景&#xff1f; 本文基于Labview软件&#xff0c;独到的讲解了簇与变体与类函数的使用方法和场景&#xff0c;从理论上讲解其数据流的底层概念&#xff0c;从实践上…

汽车维修类中译英的英语翻译

近年来&#xff0c;随着全球化的加速和汽车市场的不断扩大&#xff0c;汽车维修领域的交流与合作也日益频繁。汽车维修类中译英的英语翻译在汽车行业中扮演着至关重要的角色。那么&#xff0c;针对汽车维修类翻译&#xff0c;中译英的英语翻译有何技巧&#xff1f; 业内人士指出…

Linux 系统解压缩文件

Linux系统&#xff0c;可以使用unzip命令来解压zip文件 方法如下 1. 打开终端&#xff0c;在命令行中输入以下命令来安装unzip&#xff1a; sudo apt-get install unzip 1 2. 假设你想要将zip文件解压缩到名为"target_dir"的目录中&#xff0c;在终端中切换到目标路…

C#/.NET/.NET Core拾遗补漏合集(24年4月更新)

前言 在这个快速发展的技术世界中&#xff0c;时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节&#xff0c;以帮助大家更全面地了解这些技术栈的特性和发展方向。 GitHub开源地…

Java中的单元测试Junit框架

单元测试 概述与以往的测试比较 Junit框架快速入门优点测试步骤断言机制 自动化测试 Junit框架常见注解 概述 针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其进行正确性测试 与以往的测试比较 只能在main方法编写测试代码&#xff0c;去调用其…

Python实现PDF页面的删除与添加

在处理PDF文档的过程中&#xff0c;我们时常会需要对PDF文档中的页面进行编辑操作的情况&#xff0c;如插入和删除页面。通过添加和删除PDF页面&#xff0c;我们可以增加内容或对不需要的内容进行删除&#xff0c;使文档内容更符合需求。而通过Python实现PDF文档中的插入和删除…

微服务学习 Eureka注册中心

服务调用时候出现问题&#xff0c;当服务者很多时候&#xff0c;比如不同的端口。消费者如何找到服务者的地址&#xff1f;又如何判断服务者是否健康。 Eureka基本原理&#xff1a; 总结:如果有多个服务提供者&#xff0c;消费者该如何选择&#xff1f; 搭建Eureka注册中心: 1.…