5.IOTDB数据模型

分类栏目:IOTDB

资讯

物理量:

物理量也称工况或字段,是在实际场景中检测装置所记录的测量信息,且可以按一定规律变换成为电信号或其他所需形成的信息输出并发送给IOTDB。在IOTDB中,存储的所有数据及路径,都是以物理量为单位进行组织。
 

实体:

一个物理实体,也称为设备,是在实际场景中拥有物理量的设备或装置。在IOTDB中,所有的物理量都有其对应的归属实体。
 

存储组:

一组物理实体,用户可以将任意前缀路径设置成存储组。如有4条时间序列root.ln.wf01.wt01.status,root.ln.wf01.wt01.temperature,
root.ln.wf01.wt02.hardware,root.ln.wfo2.wt02.status,路径root.ln下的两个实体wt01,wt02可能属于同一个业主,或者同一个制造商,这时候就可以将前缀路径root.ln指定为一个存储组。未来root.ln下增加了新的实体,也将属于该存储组。
一个存储组中的所有实体的数据会存储在同一个文件夹下,不同存储组的实体数据会存储在磁盘的不同文件夹下,从而实现物理隔离。
注:
1.不允许将一个完整路径设置成存储组
2.一个时间序列其前缀必须属于某个存储组。在创建时间序列之前,用户必须设定该序列属于哪个存储组。只有设置了存储组的时间序列才可以被持久化到磁盘上。
3.一个前缀路径一旦被设定成存储组后就不可以再更改这个存储组的设定。
4.一个存储组设定后,其对应的前缀路径的祖先层级与孩子及后裔层级也不允许再设置存储组。如root.ln设置存储组后,root层级与root.ln.wf01不允许被设置为存储组。
5.存储组节点名只支持中英文字符,数字,下划线和中划线的组合。
 

路径:

路径是指符合以下约束的表达式:
 
我们称一个路径中由'.'分割的部分叫做路径结点名(nodeName)。例如:root.a.b.c为一个层级为4的路径。
下面是对路径结点名(nodeName)的约束:
1.root作为一个保留字符,它只允许出现在下文提到的时间序列的开头,若其他层级出现root,则不发解析,提示报错。
2.除了时间序列的开头的层级(root)外,其他的层级支持的字符如下:
    • [ 0-9 a-z A-Z _ : @ # $ { } ] (字母,数字,部分特殊字符)
    • ['\u2E80'..'\u9FFF'] (UNICODE 中文字符)
3.如果需要在路径结点名中用特殊字符,可以用反引号引用路径结点名。
 
 

路径模式:

为了使得在表达多个时间序列的时候更加方便快捷,IOTDB为用户提供通配符*或**的路径。用户可以利用两种通配符构造出期望的路径模式。通配符可以出现在路径中的任何层。
*在路径中表示一层。例如:root.vehicle.*.sensor1代表的是以root.vehicle为前缀,以sensor1为后缀,层次为4层的路径。
**在路径中表示是(*)+,即为一层或多层*。例如root.vehicle.device1.**代表的是root.vehicle.device1.*,root.vehicle.device1.*.*,root.vehicle.device1.*.*.*等所有以root.vehicle.device1为前缀路径的大于等于4层的路径;root.vehicle.**.sensor1代表的是以root.vehicle为前缀,以sensor1为后缀,层次大于等于4层的路径。
 
 
时间序列:
时间戳(Timestamp):是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳。
数据点:一个“时间戳-值”对。
一个物理实体的某个物理量在时间轴上的记录,是数据点的序列。
一个实体的一个物理量对应一个时间序列,即实体+物理量=时间序列。
时间序列也被称测点(master),时间线(timeline)。实时数据库中常被称作标签(tag),参数(parameter).
 
对齐时间序列:
在实际应用中,存在某些实体的多个物理量同时采样,形成一组时间列相同的时间序列,这样的一组时间序列在Apache IOTDB中可以建模为对齐时间序列。在插入数据时,一组对齐序列的时间戳列在内存和磁盘中仅需存储一次,而不是每个时间序列存储一次。
对齐的一组时间序列最好同时创建。不可以在对齐序列所属的实体下创建非对齐的序列,不可以在非对齐序列所属的实体下创建对齐序列。
查询数据时,可以对于每一条时间序列单独查询。
插入数据时,对齐的时间序列中某列的某些行允许有空值。

元数据模板(Schema template):

实际应用中有许多实体所采集的物理量相同,即具有相同的工况名和类型,可以声明一个元数据模板来定义可采集的物理量集合。将元数据模板挂载在树形数据模式的任意节点上,表示该节点下的所有实体具有相同的物理量集合。
目前每一条路径节点仅允许仅允许挂载一个元数据模板,即当一个节点被挂载元数据模板后,它的祖先节点和后代节点都不能在挂载元数据模板。实体将使用其自身或祖先的元数据模板作为有效模板。
 
挂载元数据模板后,即可向挂载节点或该节点的子孙节点,按照模板的模式进行数据写入。
 

修改,激活,解除,卸载与删除元数据模板

创建元数据模板后,还可以增加或删除模板中的节点。需要注意的是,一旦模板被挂载,在卸载模板之前就不再允许从模板中删除节点。
对于挂载了模板的节点或其子孙节点,可以通过相应接口激活模板。对挂载模板与激活模板的状态进行区分,是为了服务一种常见的场景:在IOTDB元数据模型MTree中,经常需要在数量众多的节点上“应用”元数据模板,而这些节点一般拥有共同的祖先节点。因此,可以在其共同祖先节点挂载模板,而不必对其大量的子节点进行挂载操作。对于需要“应用”模板的节点,则应该使用激活模板的操作。
解除与卸载模板,分别是激活与挂载模板的逆过程。其中,对一个节点解除模板还会删除该节点在模板中的序列写入的数据。需要注意的是,如果一个挂载了模板的节点或其子节点,当前已经激活了模板,那么在解除激活之前,该节点就不能卸载模板。类似的,如果有任意一个节点挂载了模板,那么在其卸载之前,模板就不能被删除。