count flat timeseries 统计所有多元序列分量个数及一元序列个数
count timeseries 统计所有多元序列个数及一元序列个数

entity == device

存储组.实体.一元物理量 的完整路径 unarySeries
存储组.实体.多元物理量 的完整路径 multiSeries

一元物理量 unaryMeasurement
多元物理量 multiMeasurement
多元物理量分量 MultiMeasurementComponent


在现在的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是第几层。


这里可以让 VectorPartialPath 内部的 nodes 始终只表示到 vector 层,即 ("root", "sg", "device", "vector"),然后下面的 subSensors 统一改为用 String 存储,这样 device 直接返回上一层,measurement 根据 subSensor 的 size,1个就返回 vector + subSensor[0], 否则返回 vector。对于需要使用 subSensor 作为 PartialPath 使用的情况,用 nodes + subsensor 返回数组新建 PartialPath 即可 ————————————魏祥威注).


MTree & MManager改动

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

现有的 MNode 种类包括:

  • MNode (基类,普通的节点,包含 device 节点)
  • StorageGroupMNode(存储组节点,多记录了 TTL 等信息)
  • MeasurementMNode(传感器节点,目前 vector / 非vector 的叶子节点都使用MeasurementMNode)
    • 包含 IMeasurementSchema,对于 vector 类型来说,为 VectorMeasurementSchema;对于非 vector 类型来说,为 MeasurementSchema。
    • 此外还包含 alias 等信息


最小改动:

需要为 MNode 基类增加标志变量:isDevice,表征其是否为 device,从而可以根据路径(fullPath)获取其 deviceId 信息


对于嵌套序列:

可以向上或向下(具体看功能定义)增加嵌套,只需将对应节点的 isDevice 设置为 true 即可。

例如:

原有的序列为:root.sg.d1.s1,假定 d1 为设备,则 d1 节点 isDevice = true

现在需要向下新增一个传感器,即 s1 也成为设备:root.sg.d1.s1.s2,则此时 s1 节点 isDevice = true

注意:s1 节点依然为 MeasurementMNode 节点,也就是说它依然可以作为一条时间序列的叶子节点,不影响现有计算时间序列、展示和查找时间序列的逻辑


设备模板改动

设备模板中字段:
Map<String, IMeasurementSchema> schemaMap
记录了每一个测点名称到其schema的映射,这里需要将其key变为完整测点名称

例如对于以下模式模板:
vector(s1,s2), s3, s4

现在的设计是:
vector -> VectorMeasurementSchema(s1, s2)
s3 -> MeasurementSchema(s3)
s4 -> MeasurementSchema(s4)

应改为:
vector.s1 -> VectorMeasurementSchema(s1, s2)
vector.s2 -> VectorMeasurementSchema(s1, s2)
s3 -> MeasurementSchema(s3)
s4 -> MeasurementSchema(s4)

在设备模板中查找测点时,应传入完整测点路径


对查询的影响

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

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

  • No labels