...
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变为完整测点名称
...