iotdb的数据模型

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iotdb的数据模型相关的知识,希望对你有一定的参考价值。

一 数据模型

1.1 数据模型

root 是整个树状结构的父节点, CirroData-TimeS 有存储组、设备、测点等概念,数据在
存储的时候,不同的存储组的数据是存储在不同的文件夹中的。上图中有 root.sgcc、root.ln
两个存储组。叶子节点叫做测点,叶子节点的父节点叫做设备 从父节点 root 到叶子节点的
全路径叫做时间序列 比如下图中有 root.sgcc.wf01.status 4 条时间序列。
IoTDB的语法规定, ROOT节点到叶子节点的路径以“.”连接,以此完整路径命名IoTDB中的一个时间序列。ROOT.ln.wf01.wt01.status

1. 存储组(Storage Group): IoTDB为了管理时序数据提出的一个概念,类似于关系数据库中的数据库的概念。从用户角度,主要用于对设备数据进行分组管理;从IoTDB数据库角度,存储组又是一个并发控制和磁盘隔离的单位,不同存储组之间可以并行读写。

设置合理数量的存储组可以带来性能的提升:既不会因为产生过多的存储文件(夹)导致频繁切换IO降低系统速度(并且会占用大量内存且出现频繁的内存-文件切换),也不会因为过少的存储文件夹(降低了并发度从而)导致写入命令阻塞。

在路径中,不允许使用单引号。如果你想在LayerName中使用.等特殊字符,请使用双引号。例如,root.sg."d.1"."s.1"。双引号内支持使用转义符进行双引号的嵌套,如 root.sg.d1."s.\\"t\\"1"

 存储组节点名只支持中英文字符、数字、下划线和中划线的组合。例如root.存储组_1-组1 。

2.设备 (Device):对应现实世界中的具体物理设备,例如:电厂某制造单元、风力发电机、汽车、飞机发动机、地震波采集仪器等。在IoTDB中, device是时序数据一次写入的单位,一次写入请求局限在一个设备中。

 3.传感器(Sensor): 对应现实世界中的具体物理设备自身携带的传感器,例如:风力发电机设备上的风速、转向角、发电量等信息采集的传感器。在IoTDB中,Sensor也称为测点(Measurement),具体指传感器采集的某时刻的传感器值,在IoTDB内部采用<time, value>的形式进行列式存储

4.时间序列(Time Series): 类似于关系数据库中的一张表,不过这张表主要有时间戳(Timestamp)、设备ID(Device ID)、测点值(Measurement)三个主要字段。为了便于对时间序列的设备信息进行更多描述,IoTDB还增加了Tag和Field等扩展字段,其中Tag支持索引,Field不支持索引。在有的时序数据库中,又称为时间线,表示记录某设备某传感器值随着时间不断变化的值,形成一条沿着时间轴不断追加测点值的时间线。

在IoTDB中所有的时间序列必须以root开始、以传感器作为结尾。一个时间序列也可称为一个全路径。

https://www.cnblogs.com/huaweiyun/p/14943751.html

5.路径(Path):IoTDB构造了一个以root为根节点、把存储组、设备、传感器串联在一起的树形结构,从root根节点经过存储组、设备到传感器叶子节点,构成了一条路径。也叫时间序列。

在本文所述场景中,每次到达的数据通常以集团为单位(即数据可能为跨电场、跨设备的),为了写入数据时避免频繁切换IO降低系统速度,且满足用户以集团为单位进行物理隔离数据的要求,我们将存储组设置在集团层。

IOTDB中绝对时间戳分为二种,一种为LONG类型,一种为DATETIME类型(包含DATETIME-INPUT, DATETIME-DISPLAY两个小类)。在用户在输入时间戳时,可以使用LONG类型的时间戳或DATETIME-INPUT类型的时间戳,其中DATETIME-INPUT类型的时间戳支持格式如表所示:

format
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy-MM-dd'T'HH:mm:ss
yyyy/MM/dd'T'HH:mm:ss
yyyy.MM.dd'T'HH:mm:ss
yyyy-MM-dd HH:mm:ssZZ
yyyy/MM/dd HH:mm:ssZZ
yyyy.MM.dd HH:mm:ssZZ
yyyy-MM-dd'T'HH:mm:ssZZ
yyyy/MM/dd'T'HH:mm:ssZZ
yyyy.MM.dd'T'HH:mm:ssZZ
yyyy/MM/dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss.SSS
yyyy.MM.dd HH:mm:ss.SSS
yyyy/MM/dd'T'HH:mm:ss.SSS
yyyy-MM-dd'T'HH:mm:ss.SSS
yyyy.MM.dd'T'HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss.SSSZZ
yyyy/MM/dd HH:mm:ss.SSSZZ
yyyy.MM.dd HH:mm:ss.SSSZZ
yyyy-MM-dd'T'HH:mm:ss.SSSZZ
yyyy/MM/dd'T'HH:mm:ss.SSSZZ
yyyy.MM.dd'T'HH:mm:ss.SSSZZ
ISO8601 standard time format

相对时间戳

相对时间是指与服务器时间now()DATETIME类型时间相差一定时间间隔的时间。 形式化定义为:

 

 

now() - 1d2h //比服务器时间早1天2小时的时间
now() - 1w //比服务器时间早1周的时间

总结:

 

 

以上是关于iotdb的数据模型的主要内容,如果未能解决你的问题,请参考以下文章

Apache IoTDB C# SDK 介绍

物联网数据库 IoTDB —— 从协议到数据

2022 IoTDB Summit:中国核电刘旭嘉《工业时序数据库 Apache IoTDB 在核电的应用实践》...

IoTDB简介

IoTDB简介

物联网数据库 IoTDB —— 从协议到数据