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

news2024/12/23 13:16:38

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.coloradmin.cn/o/1590280.html

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

相关文章

【数学建模】2024认证杯C题完整思路和代码论文解析

经过不懈的努力,2024认证杯数学建模C题的完整论文和代码已完成,代码为A题全部4问的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立与求解、问题2模型的建立与求解、问题3模型的建…

Rockchip Android13 Vold(一):Native层

一:概述 Vold全称Volume Daemon是用于管理存储类设备的守护进程,负责接收驱动层设备挂载和卸载消息以及与Framework层之间的通信。Vold作为一个守护进程位于Android的Native Daemons层。 二:Vold框架图 三:Vold Sevice Android13的init.rc位于/system/etc/init/hw/其中使…

域名网络、

http://www.localhost:8080/hello http://127.0.0.1:8080/hello 一般在本机的C:\Windows\System32\drivers\etc的host文件里都有 在这个hosts配置文件中有一个127.0.0.1和默认的用户名locahost,在tomcat启动后输入的地址就是localhost端口号,默认的…

跟bug较劲的第n天,undefined === undefined

前情提要 场景复现 看到这张图片,有的同学也许不知道这个冷知识,分享一下,是因为我在开发过程中踩到的坑,花了三小时排查出问题的原因在这,你们说值不值。。。 我分享下我是怎么碰到的这个问题,下面看代码…

可视化大屏的应用(12):在智慧制造中的十大价值

一、什么是智慧制造 智慧制造是指通过信息技术、物联网、人工智能等先进技术的应用,实现生产过程的数字化、网络化、智能化,从而提高生产效率、降低成本、提高产品质量和灵活性的一种制造模式。 智慧制造的核心是将传统的制造过程与先进的信息技术相结合…

【opencv】示例-grabcut.cpp 使用OpenCV库的GrabCut算法进行图像分割

left mouse button - set rectangle SHIFTleft mouse button - set GC_FGD pixels CTRLleft mouse button - set GC_BGD pixels 这段代码是一个使用OpenCV库的GrabCut算法进行图像分割的C程序。它允许用户通过交互式方式选择图像中的一个区域,并利用GrabCut算法尝试…

【大语言模型】基础:如何处理文章,向量化与BoW

词袋模型(BoW)是自然语言处理(NLP)和机器学习中一种简单而广泛使用的文本表示方法。它将文本文档转换为数值特征向量,使得可以对文本数据执行数学和统计操作。词袋模型将文本视为无序的单词集合(或“袋”&a…

洛谷题单 -- 图论的简单入门

B3643 图的存储 链接 : 图的存储 - 洛谷 思路 : 这一题要考察图的存储方式 , 一般可以使用邻接矩阵 或 邻接表来存储 图的结点 和1 边的信息 &#xff0c;详情请看代码 : 代码 #include<bits/stdc.h> using namespace std;const int N 1010 ; int n , m ; int …

建造者模式:构造复杂对象的艺术

在面向对象的设计中&#xff0c;建造者模式是一种重要的创建型设计模式&#xff0c;专门用来构建复杂的对象。它主要目的是将对象的构造代码与其表示代码分离&#xff0c;使同样的构建过程可以创建不同的表示。本文将详细介绍建造者模式的定义、实现、应用场景以及优缺点&#…

VBA中如何对工作表进行排序

代码 在VBA中对工作表进行排序的最简单方法是直接使用Move方法来移动工作表。 Sub SortSheetsByNameDescending()Dim sheetsDim sheet As WorksheetDim i As Integer, j As IntegerDim sortedSheets() As Array 获取当前工作簿中的所有工作表Set sheets ThisWorkbook.Sheets…

【深入理解Java IO流0x09】解读Java NIO核心知识(下篇)

1. NIO简介 在开始前&#xff0c;让我们再简单回顾一下NIO。 在传统的 Java I/O 模型&#xff08;BIO&#xff09;中&#xff0c;I/O 操作是以阻塞的方式进行的。也就是说&#xff0c;当一个线程执行一个 I/O 操作时&#xff0c;它会被阻塞直到操作完成。这种阻塞模型在处理多…

【研发效能·创享大会-嗨享技术轰趴】-IDCF五周年专场

一、这是一场创新分享局&#xff01; 来吧&#xff0c;朋友们! 参加一场包含AIGC、BizDevOps、ToB产品管理、B端产品运营、平台工程、研发效能、研发度量、职业画布、DevOps国标解读的研发效能创享大会&#xff0c;会有哪些收益呢&#xff1f; 知识更新与技能提升&#xff1a;…

给现有rabbitmq集群添加rabbitmq节点

现有的&#xff1a;10.2.59.216 rabbit-node1 10.2.59.217 rabbit-node2 新增 10.2.59.199 rabbit-node3 1、分别到官网下载erlang、rabbitmq安装包&#xff0c;我得版本跟现有集群保持一致。 erlang安装包&#xff1a;otp_src_22.0.tar.gz rabbitmq安装包&#xff1…

Linux系统启动过程详解

启动过程是指计算机从开机自检到操作系统完全加载的一系列动作。深入理解启动过程对于有效解决启动问题、提升系统性能以及高效管理系统的启动组件至关重要。例如&#xff0c;可以帮助我们识别和处理在启动过程中可能出现的诸如硬件故障、配置错误等问题。例如帮助我们个性化定…

C语言之九九乘法表||素数||最小公倍数

一、九九乘法表 &#xff08;1&#xff09;思路 1、九九乘法表中存在三个变量&#xff0c;以 x1 ; x2 ; y 为例&#xff08;这里也可以使用两个变量&#xff0c;用x1和x2来表示y&#xff0c;方法一样&#xff09; 2、想好了变量之后&#xff0c;我们要想怎样将他实现呢&#x…

Robotstudio2024中从备份文件恢复和创建工作站的具体方法演示

Robotstudio2024中从备份文件恢复和创建工作站的具体方法演示 如下图所示,打开Robotstudio2024软件,有需要的可以从以下链接获取: ABB机器人编程仿真软件RobotStudio 2024.1-链接baiduyun 点击“新建”—工作站—创建, 如下图所示,点击“ABB模型库”,选择自己使用的机器…

二刷大数据(一)- Hadoop

目录 大数据4V Hadoop概念Hadoop大版本区别HDFS产生背景架构文件块大小写文件流程读数据流程NameNode & SecondNameNodeDataNode工作机制 YARNMapReduce为什么不适合实时核心思想切片与MapTask原理MapTask机制MapReduceApplicationMasterApplicationMaster shuffle机制Redu…

jenkins+sonar配置

安装插件 Sonar Scanner 用于扫描项目 配置sonar scanner jenkins集成sonar 1、sonar生成token 生成完保存好&#xff0c;刷新后无法查看 2、jenkins配置全局凭据 3、jenkins配置系统设置

扭蛋机小程序:线上扭蛋机模式发展空间有多大?

潮玩行业近几年的发展非常快&#xff0c;推动了扭蛋机市场的发展&#xff0c;越来越多的人加入到了扭蛋机赛道中&#xff0c;市场迎来了新的发展期。如今&#xff0c;我国的二次元文化的发展不断成熟&#xff0c;扭蛋机主打的二次元商品迎来了更多的商业机会。 一、互联网扭蛋机…

改变LoRA的初始化方式,北大新方法PiSSA显著提升微调效果

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 随着大模型的参数量日益增长&#xff0c;微调整个模型的开销逐渐变得难以接受。 为此&#x…