一文了解时序数据库 IoTDB 分区、同步与备份

news/2025/10/13 17:25:32/文章来源:https://www.cnblogs.com/apacheiotdb/p/19138952

9 月 24 日,“保障数据永不丢失!数据管理实战:分区、同步与备份”直播中,天谋科技时序数据库内核研发工程师,IoTDB 项目交付负责人曹志佳围绕 IoTDB 分区同步和备份相关原理及实践展开,为大家介绍了数据分区对时序数据库的重要性、IoTDB 的分区机制和同步方式,以及流处理框架的应用场景。

此次直播回放可在这里查看,主要内容我们为你总结如下:

01 数据分区的重要性及特征

(1)时序数据背景及特征

随着 IT 和 OT 行业技术的快速迭代,时序数据在工业、能源、军工等众多领域的价值日益凸显,如在 AI 分析、设备预警等场景中发挥着重要作用。

时序数据的特点,一是测点数量巨大,如储能行业大型储能站传感器数量可百万级,全国范围内测点量级能达百亿;汽车行业某品牌在路上行驶车辆的测点量级可达 10 亿以上。二是存储代价大,如钢铁制造行业超大型炼钢装置和新能源发电场景中的风机,数据产生量大且采集频率高,对磁盘需求达 PB 级以上。

00fd283370a9953b6316db0f3e0b86ae

(2)数据分区的定义及优势

数据分区的定义为将数据按照一定规则进行切分,形成可独立管理的数据单元。以图书馆管理书籍为例,有数据分区时,按类别将书籍放置在不同书架,管理和查找效率更高。

面对海量的时序数据,传统数据库难以管理,数据分区可提高数据管理和查询效率。

55d3612e5c3a242265575c4b213cce9f

02 IoTDB 的数据分区机制

(1)分区维度及概念

IoTDB 的数据分区基于序列和时间两个维度,涉及概念包括序列分区槽和时间分区槽。

序列分区槽是对时间序列的纵向管理机制,默认是数据库级别的,每个数据库持有固定数量(默认 1,000 个)的序列分区槽,通过哈希算法将序列分配到不同槽位,可避免内存映射占用过多问题。

时间分区槽是对时间序列的横向管理机制,将数据按固定时间范围(默认 7 天)切分,可提高数据查询效率。

14fce311baae08a1d9ddc90f0bd3a355

(2)分区在集群中的分布

IoTDB 节点分为 ConfigNode 和 DataNode,ConfigNode 是集群的管理者和协调者,DataNode 处理客户的读写请求。

源数据分区和数据分区位于 DataNode 中,每个 DataNode 上存在一个或多个 SchemaRegion 和 DataRegion。IoTDB 集群通过负载均衡算法保证数据分区在不同节点上均匀分布,提高数据存储和写入的均衡性和效率。

f8314d6e17ebcbff4c43dc3814d0d9cf

(3)读写视角下的分区执行流程

写入流程中,客户端将写入请求发送给 IoTDB 集群的任意节点,节点根据 device_id 做负载均衡算法,确定数据写入的节点,再根据数据携带的时间判断其所属的时间分区。

查询流程中,查询请求发送到数据库后,查询引擎通过 device_id 快速判断数据所在节点,将请求转发给该节点生成查询计划,再根据查询请求中的时间范围从相应时间分区中捞取数据,无需扫描其他时间分区,提升查询效率。

064e308357c00eecb9492d9738059450

03 IoTDB 的数据同步机制

(1)数据同步的分类及场景

IoTDB 的数据同步机制分为集群内同步和集群外同步。

集群内同步是指集群不同节点之间的数据同步,基于一致性协议实现,目的是保证集群的高可用和数据副本的一致性。

集群外同步是指不同 IoTDB 集群之间的数据同步,可用于多集群间的数据协同,如热备份、容灾和端边云协同等场景。

6f2755f4cffe8ff963a7d58887e27336

(2)集群内同步的协议及流程

IoTDB 支持的协议类型分为强一致性和弱一致性(最终一致性)协议。IoTDB 源数据分区和 ConfigNode 采用 Ratis 强一致性协议,确保请求在所有副本间成功更新才认为成功,但会产生数据延迟;DataNode 的读写采用团队自研的 IoTConsensus 协议,允许数据先写入本地,再异步同步到其他节点,可最大化提升写入性能。

同步流程中,服务端收到请求后,先由共识层处理,将请求下发给状态机,再由状态机下发给 DataRegion,DataRegion 调用存储引擎将请求写入内存表和 WL。日志分发线程异步将写入请求同步给副本节点,维护一个待同步队列,当队列无元素时向共识层索要请求。若副本节点掉线,主节点会记录同步进度,节点恢复后继续同步,保证数据的最终一致性。

集群内协议可用于集群内单点故障的容灾,当主节点出现问题时,备节点能自动升级为主节点继续提供读写服务。

d2d1362fc4cab2e2e26a51d7248cf5b3

(3)集群间同步的框架及应用场景

IoTDB 提供的流处理框架包括数据抽取、数据处理和数据发送三个阶段。数据抽取决定从 IoTDB 中取出的数据范围,包括测点范围和时间范围;数据处理可对抽取的数据进行编程化处理,如删除离散值、转换数据类型等;数据发送由用户决定将处理后的数据发送到何处。框架支持用户基于官方提供的标准化编程框架自定义逻辑,官方也提供了一些内置插件。

IoTDB 的流处理框架可用于备份和容灾,通过简单 SQL 即可创建数据同步任务,无需依赖第三方组件,实现异地容灾,延迟可达毫秒级。还可应用于数据库内的实时告警、流计算、实时聚合和数据写回等场景,数据库间的双活集群、降采样同步、跨网闸传输和数据加密等场景,以及数据库外的数据订阅、发送到消息队列、Flink 数据加工和离线历史备份等场景。

4be7f343430a6b2818369ac1690c92c6

04 问答环节信息汇总

(1)Ratis 协议使用建议

对于追求数据高一致性且对写入性能要求不高的场景,可考虑使用 Ratis 协议,IoTDB 对数据分区支持 Ratis 协议,但性能不如 IoTConsensus 协议。

(2)序列分区设计原因

面对超海量的源数据,如储能和气象场景,为减少内存管理资源消耗,采用序列分区槽的降维方式进行管理。

(3)跨网闸传输适配

流处理框架已对常见网闸(如南瑞、科东)做过适配,未适配的网闸只需进行简单适配即可使用。

(4)高性价比软硬件存储方案

IoTDB 支持多级存储,可将高频数据存储在 SSD 上,低频数据存储在机械硬盘或 S3 上,且支持查询时从 S3 拉回数据,用户对此过程无感。

(5)主节点磁盘损坏数据丢失问题

主节点给副本节点发数据延迟低,基本可控制在 1 毫秒以内,但极端情况下可能有数据丢失,这是最终一致性协议相对于强一致性协议的小弊端。

(6)高一致性与最终一致性对比

写入时,使用 Ratis 协议和 IoTConsensus 协议性能相差一半以上;查询时,IoTDB 默认查主节点,只要数据写入,查询效率不受影响。

(7)主副本掉线数据丢失问题

主节点会在共识层维护写入请求的 index,记录数据同步进度,节点恢复后能继续同步未完成的数据,不会丢失。

(8)多副本影响

多副本保证数据高可用,但会增加存储空间需求。写入时,副本同步为异步操作,一般不影响主线程,但在服务器资源瓶颈时可能有影响。

(9)主节点带宽要求

IoTDB 采用多主协议,每个节点都可对外提供查询服务,数据查询负载相对均衡。若带宽有限,可在网络传输中对数据进行压缩,但会降低传输效率。

(10)查询优化

客户端知道每个设备所在的 leader 节点,可自动连接该节点进行查询,减少请求转发。

(11)client 存储配置

cache leader 功能可配置,客户端资源好时可开启,资源不足时可关闭。

(12)指定节点存储副本问题

目前不支持指定节点存储数据副本,但支持手动迁移。可通过创建多个集群进行实时数据同步,实现异地双活。

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

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

相关文章

借助Selenium实现网页截图来生成应用封面

借助Selenium实现网页截图来生成应用封面pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

恒温恒湿试验箱多少钱一台?2025年最新价格,由上海柏毅提供!

恒温恒湿试验箱的价格受容积、温湿度范围、控制精度、品牌及功能配置等多因素影响,市场价格跨度较大。以下是上海柏毅提供的最新数据的详细分析: 设备名称 内箱容积 建议起售价 48L …

从底层到应用:开散列哈希表与_map/_set 的完整实现(附逐行注释) - 实践

从底层到应用:开散列哈希表与_map/_set 的完整实现(附逐行注释) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

学习日报 20250928|React 中实现 “实时检测”:useEffect 依赖项触发机制详解 - 实践

学习日报 20250928|React 中实现 “实时检测”:useEffect 依赖项触发机制详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

日志|JavaScript

XML数据没多少标签一大堆事件监听事件种类

UNION类SQL注入步骤总结

UNION类SQL注入步骤总结

MQTT的使用

客户端重连机制public static void Reconnect_Using_Timer(){/** This sample shows how to reconnect when the connection was dropped.* This approach uses a custom Task/Thread which will monitor the connecti…

iOS 26 电耗监测与优化,耗电问题实战 + 多工具 辅助策略

本文聚焦 iOS 26 电耗 /耗电监测 /省电策略 /电量优化,结合媒体实测与 Apple 正式声明,分析 Liquid Glass 界面、Adaptive Power 模式、系统后台任务等对电量的影响,设计详细的电耗监测指标体系与实战流程。很多用户…

详细介绍:[wps_clear]wps清理残余 ——注册表不干净

详细介绍:[wps_clear]wps清理残余 ——注册表不干净2025-10-13 17:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

moectf2025

misc ez_LSB 放入stegsolve.jarbase64解密为:SSTV查询到可以用qsstv程序进行解码来恢复图片。 初次尝试发现附件不能直接放进qsstv,需要删掉下图LIST蓝色部分(生成软件FFmpeg(Lavf57.52.100)的标识)才能被qsstv正…

VRay 6.1 for Rhino 6-8 安装教程与功能详解(含图文步骤)

软件介绍 VRay 6.1 for Rhino 6-8是由Chaos Group推出的专业三维模型渲染插件,专为Rhino 6至8版本设计。该软件集成多平台兼容性,支持Windows与Mac OS系统无缝运行,可实现跨设备数据交换与协同工作。其核心渲染引擎…

网络编程实践笔记_3_阿贝云_免费云服务器_远程操作的一些小提示

git bash 操作记录如果你已经把服务启动了,应该就不用看这里了,不过先给启动起来的做个小提醒: 后台模式 用 nohup gunicorn 启动起来的服务,要额外 kill 掉才会终止,不然还是会一直运行并占用端口的哦。 执行命令…

读书笔记:深入理解 Oracle 的 DATE 类型:存储、计算与最佳实践

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

一文读懂:C++ STL 学生与竞赛选手都会遇到的容器默认排序的疑惑

C++ STL 学生与竞赛选手都会遇到的疑惑。 下面我们系统讲清楚:🧩 一、结论速览表:STL 常见数据结构默认排序方向容器类型 默认排序方向 底层实现 比较器默认类型 改为从大到小的写法std::set 从小到大(升序) 红黑…

零基础新手的以太坊质押(Staking)终极科普文章

零基础新手的以太坊质押(Staking)终极科普文章。我们将用最生活化的比喻,揭开它神秘的面纱。不再挖矿,变身“数字银行股东”:一文读懂以太坊质押 想象一下,以前的以太坊就像一个巨大的“数字挖矿游戏”,而今天,…

常见应用案例,AI应用开发流程

AI应用开发流程: 1.分析需求; 2.找对应的模型,分析匹配合适的模型; 3.下载模型,跑数据集测试 4.应用 1 文生图模型: 2 图生文: 图片文本识别,提取文本,识别车牌号: 3.识别表单文本 https://github.com/Paddl…

对数据要求高的On-the-fly

必须是有序序列(Sequence is Mandatory) 不支持无序数据集(如 Zip-NeRF 风格或许多 DeepBlending 场景)。 要求图像按顺序捕获,且连续帧之间必须有足够的重叠(理想情况下超过 2/3 的内容)。 严格的运动要求(Tr…

计算机视觉(opencv)——基于 dlib 的实时摄像头人脸检测 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【开题答辩全过程】以 springboot+美食电子商城的设计与实现为例,含有答辩的问题和答案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

程序设计实践训练(Day1) - --YZ-

程序设计实践训练(Day1)Posted on 2025-10-13 16:46 --YZ-- 阅读(0) 评论(0) 收藏 举报程序设计实践训练(Day1) 第一——判断 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+…