Versions Compared

Key

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

...

由于一元序列和多元序列的分量具有相似性,在查询、写入的时候容易引发歧义。


例1:在 例1:vector 场景下考虑查询语句的语义。

元数据包含:

...

Code Block
languagesql
themeConfluence
linenumberstrue
select * from root.d1
select ** from root.d1
select s1 from root.d1.*
select s1 from root.d1.**


例2:在 例2:vector 场景下考虑对以下语句是否应该支持。

Code Block
languagesql
themeConfluence
linenumberstrue
// 场景1:一个物理设备具有多个一元序列
create timeseries root.sgsg1.d3d1.s1 FLOAT
create timeseries root.sgsg1.d3d1.s2 FLOAT

insert into root.sgsg1.d3d1(time, s1) values(1,1)
insert into root.sgsg1.d3d1(time, s1, s2) values(1,1,2)

// 场景2:一个物理设备具有一个多元序列
create aligned timeseries root.sg1.d1.bv1(s1 FLOAT, s2 INT32)

insert into root.sgsg1.d1(time, bv1(s1, s2)) values(1,(1,2))
insert into root.sgsg1.d1(time, bv1(s1)) values(2,(1)) //多元序列允许某列的某些行有空值,如时间戳2下只有s1有值,s2无值,则只需:
insert into root.sgsg1.d1(time, bv1(s2)) values(3,(2))

// 场景3:一个物理设备具有多个多元序列
create aligned timeseries root.sgsg1.d3d1.陀螺仪(s1 FLOAT, s2 INT32)
create aligned timeseries root.sgsg1.d3d1.GPS(s3 FLOAT, s4 INT32)

insert into root.sgsg1.d3d1(time, 陀螺仪(s1, s2), GPS(s3, s4)) values(1, (1, 2),(3,4))
insert into root.sgsg1.d3d1(time, 陀螺仪(s1, s2)) values(1, (1, 2))

// 场景4:一个物理设备具有混合的多元序列和一元序列
create aligned timeseries root.sgsg1.d4d1.GPS(s3s1 FLOAT, s4s1 INT32)
create timeseries root.sgsg1.d4d1.s5s1 FLOAT

insert into root.sgsg1.d3d1(time, GPS(s3s1, s4s2), s5s1) values(1, (3,4), 5)


可见,在当前的数据模型下,一元序列、多元序列、多元序列的分量之间的关系比较模糊,容易引发歧义。

...

对于数据插入:为适应自动创建 Schema,向对齐时间序列插入数据必须加 aligned 关键词。不能同时向多组对齐时间序列插入,不能同时向对齐和非对齐的时间序列插入。


例如:

Code Block
languagesql
themeConfluence
linenumberstrue
// 场景1:一个物理设备具有多个一元序列场景1:一个物理设备具有多个非对齐的时间序列
create timeseries root.sg1.d1.s1 FLOAT
create timeseries root.sg1.d1.s2 FLOAT

insert into root.sg1.d1(time, s1) values(1,1)
insert into root.sg1.d1(time, s1, s2) values(1,1,2)

// 场景2:一个物理设备具有一个多元序列场景2:一个物理设备具有一组对齐的时间序列
create aligned timeseries root.sg1.d1.v1(s1 FLOAT, s2 INT32)  // 如果仅有一组对齐的时间序列,可以去除 v1 这一层

insert into root.sg1.d1.v1(time, s1, s2) aligned values(1,1,2)
insert into root.sg1.d1.v1(time, s1) aligned values(2,2)
insert into root.sg1.d1.v1(time, s2) aligned values(3,3)

 // 场景3:一个物理设备具有多个多元序列场景3:一个物理设备具有多组对齐的时间序列
create aligned timeseries root.sg1.d1.v1(s1 FLOAT, s2 INT32)
create aligned timeseries root.sg1.d1.v2(s3 FLOAT, s4 INT32)

// 场景4:一个物理设备具有混合的多元序列和一元序列场景4:一个物理设备具有混合的对齐、非对齐的时间序列
create aligned timeseries root.sg1.d1.v1(s1 FLOAT, s2 INT32)
create timeseries root.sg1.d1.s2s1 FLOAT