TDengine IDMP 高级功能(4. 元素引用)

元素引用

对于同一个数据资产,为便于各种组织管理形式,给不同角色的用户提供不同的查看分析数据的视角,一个元素也可以通过引用的方式添加到其他元素的下面做为子元素,称之为元素引用 (Element Reference)。因此一个元素可以有多个父元素,多个引用。通过引用,IDMP 并不会物理的生成一个新的元素,类似文件系统里的 link 概念。

在一个树状结构里创建一个新元素时,该元素便有了第一个引用,因此任何一个元素的引用数总数是大于零的。当元素只有一个引用的时候,一般不会说这个唯一的引用是元素引用,而是直接称之为元素。

一个元素可以被用户直接删除,或当它的父元素被删除时,间接的被删除。由于一个元素的引用数可能大于 1,当您删除在某一个位置的元素时,这个元素不一定被真正删除了。只有当元素的引用总数为 0 时,该元素才被彻底删除或不存在了。为明确元素删除行为,IDMP 对元素引用定义了三种类型,包括强引用、包含引用和弱引用。

强引用

最常用的引用是强引用(Strong)(PI system 里称之为 Parent-Child。创建一个元素时,缺省的引用就是强引用。只要一个元素的强引用的个数大于 0,该元素就不会真正被删除,一定出现在某个树状结构里。如下图:

Wind Turbine-1 与 Wind Turbines,与 Site A, 都是强关系。当删除了元素 Site A 下的 Wind Turbine-1 时,Wind Turbine-1 并没有真正被删除,它还存在于元素 Wind Turbines 下。

包含引用

如果一个元素是另一个元素的一部分,比如一台风机上的电机,那么在这个风机元素和这个电机之间是包含关系 (Composition),这个元素的引用是包含引用。包含引用表示该元素从属于某个父元素,它是一种比强引用更强的引用关系。当在一个元素下创建一个新的子元素时,可以选择包含引用。当把一个包含引用的元素的父元素删除时,该元素被彻底删除,无论该元素是否还存在其他引用,因此它在任何树状结构里都不存在了。如下图:

元素 Motor-A 有两个父元素,其中 Wind Turbine-1 和 Motor-A 之间是包含引用关系。当 Wind Turbine-1 被删除时,所有出现 Motor-A 的地方都被删除了。

弱引用

当您想让两个元素有父子层级关系但是这个关系不影响子元素的生命周期时,可以选择弱引用(Weak)。比如 Wind Turbine-1 在 Wind Turbines 下面是弱引用,但在 Site A 下面是强引用,如果删除 Wind Turbines 下面的 Wind Turbine-1, Site A 下面的 Wind Turbine-1 继续存在,不受任何影响。

但是,如果您删除 Site A 下面的 Wind Turbine-1, 那么 Wind Turbines 下面的 Wind Turbine-1 也被自动删除,因为 Wind Turbine-1 已经不存在有强引用或包含引用了,那么所有弱引用也要被删除。

引用的规则

总结起来,对于元素引用有几个规则:

  1. 任何一个元素被创建时,它与父元素的关系,用户可以选择强引用或包含引用。
  2. 任何一个元素可以有 0 到多个弱引用,弱引用可以随意被删除,不影响其他引用或元素的存在
  3. 任何一个元素至多有一个包含引用
  4. 如果一个元素没有包含引用,那么它的强引用的数量必须大于 0
  5. 如果一个包含引用的父元素被删除,该元素的所有引用都需要被自动删除,该元素被彻底删除了。
  6. 一个元素引用被删除后,如果该元素的强引用及包含引用的总数等于 0,该元素所有的弱引用也需要被自动删除,这个元素就被彻底删除了。

当在一个树状结构里删除一个元素或元素引用,它的子元素或子元素引用也需要被删除。但该元素以及子元素是否继续存在,则要依赖上面的规则做判断。

在 IDMP 的设计里,一个树状结构就是一个分析维度。为避免实现的复杂度,在同一个树状结构下,禁止将一个元素引用在不同的路径里。一个元素可以出现在两个甚至更多个的树状结构里,但是在一个树状结构里,一个元素只能出现一次。在后续的 IDMP 产品规划里,今后会容许一个元素在同一个树状结构里被引用多次。

关于 TDengine

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。

它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,并提供 AI 智能体对数据进行预测与异常检测,提供实时的商业洞察。

相关推荐
HackTorjan1 小时前
2026年5月29日:全球首个通用人工智能操作系统正式发布,开启人机协同新纪元
人工智能
刘大猫.2 小时前
智造短剧新引擎:火山引擎上线「火山剧创 1.0」,制作效率提升 80%
人工智能·ai·chatgpt·机器人·大模型·火山引擎·短剧新引擎
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
yyuuuzz2 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
红尘散仙2 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
雅菲奥朗2 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw
HIT_Weston2 小时前
99、【Agent】【OpenCode】task 工具提示词(Slash command)(一)
人工智能·agent·opencode
25 Hz2 小时前
Mind 爱好者时空表征刊 第24期 | 时间结构学习、空间对时间表征的补偿、事件内部的时间扭曲……
人工智能
心中有国也有家2 小时前
GE图引擎深度解析——CANN的计算图优化与执行引擎
人工智能·pytorch·python·学习·numpy
海兰3 小时前
【文字三国志:第一篇】天命重构,大语言模型(LLM)动态生成文言风格的叙事文本的文字游戏
人工智能·游戏·语言模型