You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

在现在的IoTDB中,device指的是除了路径最后一层外的部分,例如对于root.sg1.d1.s1来说,root.sg1.d1就是deviceId。引入vector后,路径中会多出一个vector name,如root.sg1.d1.vector1.s1,对于这个序列而言,它的deviceId应该依然是root.sg1.d1而不是root.sg1.d1.vector1,它的measurementId应该是vector1.s1而不是单独的s1,同样的对于root.sg1.d1.vector1这个多元序列而言,它的deviceId也是root.sg1.d1,measurementId是vector1


PartialPath

现在IoTDB中,序列名是用PartialPath来表征的,在其中也是默认将倒数第二层作为deviceId,PartialPath内部是用一个String[] nodes记录路径的,所以需要在PartialPath中再记录一个index,来表示第几层是deviceId。

在其所有的构造函数中,不能简单的只传字符串了,需要指定deviceId是第几层。


MTree & MManager改动

MTree中需要记录deviceId的信息(需要考虑如何实现,因为我们支持嵌套序列),也就是说一个MNode,可能既充当Measurement,也要充当device


对查询的影响

查询构造逻辑计划时,QueryOperator中的SelectComponent中的List<PartialPath> pathsCache,是从MTree中拿到的PartialPath,在这一步的时候,就需要确定deviceId在哪一层。

经过deduplicate()方法后,去除了重复的path,得到deduplicatedPaths,对deduplicatedPaths执行transformPaths方法,将当中属于同一个Vector的path组合成一个VectorPartialPath,同样的,VectorPartialPath中也需要记录deviceId的index

  • No labels