Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1、物理量(Measurement,也称工况、字段 field)

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

2、实体(Entity,也称设备,device)

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

3、存储组(Storage group)

一组物理实体,用户可以将任意前缀路径设置成存储组。

4、数据点(Data point)

一个“时间-值”对

5、时间序列(一个实体的某个物理量对应一个时间序列,Timeseries,也称测点 meter、时间线 timeline,实时数据库中常被称作标签 tag、参数 parameter)

一个物理实体的某个物理量在时间轴上的记录,是数据点的序列。

6、对齐的时间序列(Aligned timeseries)

...

插入数据时,对齐的时间序列中某列的某些行允许有空值。

7、物理量模板(Schema template)

实际应用中有许多实体所采集的物理量相同,即具有相同的工况名称和类型,可以声明一个物理量模板来定义可采集的物理量集合。在实践中,物理量模板的使用可帮助减少元数据的资源占用。

应用场景

场景1:一个物理设备具有多个一元序列

场景1:一个物理实体具有多个非对齐的时间序列

Code Block
languagesql
themeConfluence
// 创建时间序列
// 

...

1. 完整语法(v0.12及之前)
create timeseries root.

...

sg1.d1.

...

s1 with datatype=FLOAT, encoding=RLE, compression=SNAPPY, tags(tag1=v1, tag2=v2), attributes(attr1=v1, attr2=v2)
create timeseries root.sg1.d1.s2 with datatype=FLOAT, encoding=RLE,

...

 

...

compression=SNAPPY,

...

 tags(tag1=v1, tag2=v2),

...

 attributes(attr1=v1, attr2=v2)

...



// 

...

2. 简化语法(v0.13开始支持,与之前语法兼容)
create timeseries root.

...

sg1.

...

d1.s1 FLOAT 

...

encoding=RLE

...

 

...

compression=SNAPPY

...

 

...

tags(tag1=v1, tag2=v2)

...

 

...

attributes(attr1=v1, attr2=v2)

...


create timeseries root.

...

sg1.

...

d1.s2 FLOAT 

...

encoding=RLE

...

 

...

compression=SNAPPY

...

 

...

tags(tag1=v1, tag2=v2)

...

 

...

attributes(attr1=v1, attr2=v2)

...



// 插入语句
insert into root.

...

sg1.

...

d1(time, s1) values(1,1)

...


insert into root.

...

sg1.

...

d1(time, s1, s2) values(1,1,2)

...

场景2:一个物理实体具有一组对齐的时间序列

Code Block
languagesql
themeConfluence

...

//

...

 在实体 root.sg1.d2 下创建一组对齐的时间序列
create aligned timeseries root.sg1.

...

d2.

...

(s1 FLOAT encoding=RLE, s2 INT32

...

 encoding=Grollia compression=SNAPPY) compression=SNAPPY

// 注:
// 1.可以指定每条时间序列的编码(encoding)和压缩方式(compression)

...

,但是暂不支持指定别名(alias),props, attributes,

...

//多元序列允许某列的某些行有空值,如时间戳2下只有s1有值,s2无值,则只需:

insert into root.sg.d1(time, b(s1)) values(2,(1))

//多元序列允许各列独自写入:

insert into root.sg.d1(time, b(s1)) values(3,(1))

insert into root.sg.d1(time, b(s2)) values(3,(2))

注意:场景2所创建的多元时间序列所属实体可以扩充一元或多元物理量

例如,可以向d1下继续添加一元时间序列,为d1 扩充 d1.c 序列:

 tags 等。
// 2.未指定 compression 的时间序列,则采用系统默认配置;小括号外的 compression 定义时间列压缩方式和未显式声明的列的压缩方式。

// 插入语句
insert into root.sg.d2(time, s1, s2) values(1, 1, 2)
insert into root.sg.d2(time, s1) values(2, 1)  //允许单独写某条时间序列,其他时间序列在该时间点上为空值

// 场景2所创建的对齐时间序列所属物理实体可以扩充时间序列,但需要在该物理实体下嵌套新实体。
// 例如,可以向d2下继续添加时间序列: 
create timeseries root.sg1.d2.

...

t1.

...

s1 FLOAT

...

场景3:(场景2的特例)一个物理设备仅有一个多元序列,可省略多元序列名字

...


create 

...

timeseries root.

...

sg1.d2.

...

v1.(s1 FLOAT, s2 

...

FLOAT)

场景4:一个物理设备具有多个多元序列

// 创建语句
create [aligned] timeseries root.sg.d3.陀螺仪(s1 FLOAT, s2 INT32)
create [aligned] timeseries root.sg.d3.GPS(s3 FLOAT, s4 INT32)


// 插入语句
insert into root.sg.d3(time, 陀螺仪(s1, s2), GPS(s3, s4)) values(1, (1, 2),(3,4))
insert into root.sg.d3(time, 陀螺仪(s1, s2)) values(1, (1, 2))


// 查询语句
select s1,s2 from root.sg.d3.陀螺仪
select * from root.sg.d3.陀螺仪
select 陀螺仪.* from root.sg.d3
select 陀螺仪.s1 from root.sg.d3
select d3.* from root.sg

...