当前位置: 首页 > news >正文

时序数据库IoTDB数据模型建模实例详解

一、引言

本文旨在通过具体实例详细介绍IoTDB(Internet of Things Database)的数据模型建模方法,以解决部分用户对实际系统建模的困惑。IoTDB作为一种时间序列数据库,其数据模型与实时库、InfluxDB、OpenTSDB等基于标签的模型有所不同。

二、基于标签的模型概述

在实时库、InfluxDB、OpenTSDB等数据库中,每个测点通常有一个由符号"."连接的多个属性值组成的名称(标签)。例如,在电厂应用中,测点名称可能是“电厂名称.机组.测点编码”。如果将所有测点的数据理解成一张表,则时间和测点名称构成联合主键。在InfluxDB和OpenTSDB中,每条数据包含tag和field的概念,上述数据通常被定义为3个tag和1个field,时间和所有tag列构成联合主键。

三、IoTDB数据模型介绍

IoTDB中的时间序列定义为一个测点不断采集数据,每个数据点带有时间戳,形成一条时间序列。IoTDB的目标场景是管理大量这种时间序列,每个时间序列由路径唯一定位。路径形成树形元数据结构,其中从根节点到倒数第二级的路径代表设备。同一设备的多个测点可以共享一个时间戳写入。

错误建模示例‌:
在IoTDB中,如果将Tag的名称定义为一个时间序列,并将Tag值存储为这个时间序列的值,会导致同一个时间序列的同一个时间戳只保留最后写入的点。例如,建立以下两条时间序列(root.sg.taga, root.sg.value),并用来存储多个测点(a1, b1, c1)的值,是错误的建模方式。

正确建模示例‌:
应为每个测点创建单独的时间序列,如root.sg.a1, root.sg.b1, root.sg.c1。这样,每个序列的数据可以独立存储和查询。

四、IoTDB查询介绍

IoTDB提供了灵活的查询方式,可以根据路径匹配到所有时间序列,并按照不同的对齐方式展示成一张表。对齐方式包括:

  1. 按照Time对齐(默认)‌:根据select和from子句中的路径找到所有匹配的时间序列,按时间顺序展示。
  2. 按照设备表展示‌:使用align by device语句,按时间和设备对齐,空值展示为null。
  3. 不对齐‌:每个时间序列独立展示,每个序列有两列(时间列和值列),使用disable align修饰。
五、树形模型的灵活性

IoTDB的树形模型具有高度的灵活性。例如,一个电厂有3个设备,每个设备的发电量是一个时间序列,可以创建3个序列:root.电厂1.设备1.发电量,root.电厂1.设备2.发电量,root.电厂1.设备3.发电量。如果需要增加一个电厂总发电量,只需在电厂下一级增加一个时间序列:root.电厂1.总发电量。

六、与其他模型的比较

与采用关系模型的时序数据库(如TimescaleDB)相比,IoTDB的树形模型具有更高的灵活性,适用于测点数量不确定、设备测点不同时采集的场景。然而,关系模型的学习成本较低,适用于数据较为规整的场景。因此,在选择数据库时,需要根据具体应用场景和需求进行权衡。

七、结语

IoTDB作为一种高效的时间序列数据库,其树形数据模型为大规模时间序列数据的存储和查询提供了有力支持。本文通过具体实例详细介绍了IoTDB的建模方法和查询方式,希望能够帮助用户更好地理解和应用IoTDB。

http://www.xdnf.cn/news/979633.html

相关文章:

  • Jmeter中变量如何使用?
  • MySQL 三表 JOIN 执行机制深度解析
  • 基础数论一一同余定理
  • Qt 动态插件系统QMetaObject::invokeMethod
  • 【docker】docker registry搭建私有镜像仓库
  • 开源 java android app 开发(十二)封库.aar
  • SD-WAN 技术如何助力工业物联网(IIoT)数据传输?深度解析传统方案对比与应用实践
  • Chrome 优质插件计划
  • 智慧农业物联网实训中心建设方案
  • 趋境科技英特尔生态沙龙举办,打通大模型私有化“最后一公里”
  • 当简约美学融入小程序 UI 设计:开启高效交互新篇
  • 【Java学习日记38】:C语言 fabs 与 Java abs 绝对值函数
  • element plus的el-form重置无效
  • CavityPlus: 北大团队研发的综合性蛋白质结合位点检测及功能分析网络服务器
  • 【python】预测投保人医疗费用,附insurance.csv数据集
  • 嵌入式系统内核镜像相关(三)
  • React 状态管理指南:Redux 原理与优化策略
  • 避坑:启动sdk-c demo master需要注意的事情
  • 【AI】模型vs算法(以自动驾驶为例)
  • 基于React Native的HarmonyOS 5.0休闲娱乐类应用开发
  • 多分类性能评估方法
  • 企业级RAG系统架构设计与实现指南(基于Java技术栈)
  • uniapp 腾讯云 COS 访问控制实战(细粒度权限管理)
  • 撤销Git合并操作方法总结
  • 七牛云域名配置与CNAME解析
  • 李沐 《动手学深度学习》 | 实战Kaggle比赛:预测房价
  • 【PhysUnits】17.7 readme.md更新
  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • Android Gson工具类
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程