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 智能体对数据进行预测与异常检测,提供实时的商业洞察。

相关推荐
studytosky5 小时前
深度学习理论与实战:MNIST 手写数字分类实战
人工智能·pytorch·python·深度学习·机器学习·分类·matplotlib
做萤石二次开发的哈哈5 小时前
11月27日直播预告 | 萤石智慧台球厅创新场景化方案分享
大数据·人工智能
AGI前沿5 小时前
AdamW的继任者?AdamHD让LLM训练提速15%,性能提升4.7%,显存再省30%
人工智能·算法·语言模型·aigc
Hello.Reader6 小时前
使用 Flink CDC 搭建跨库 Streaming ETLMySQL + Postgres → Elasticsearch 实战
大数据·elasticsearch·flink
后端小肥肠6 小时前
小佛陀漫画怎么做?深扒中老年高互动赛道,用n8n流水线批量打造
人工智能·aigc·agent
是店小二呀6 小时前
本地绘图工具也能远程协作?Excalidraw+cpolar解决团队跨网画图难题
人工智能
用户199701080186 小时前
1688图片搜索API | 上传图片秒找同款 | 相似商品精准推荐
大数据·数据挖掘·图片资源
程序员小白条6 小时前
你面试时吹过最大的牛是什么?
java·开发语言·数据库·阿里云·面试·职场和发展·毕设
i爱校对6 小时前
爱校对团队服务全新升级
人工智能
KL132881526936 小时前
AI 介绍的东西大概率是不会错的,包括这款酷铂达 VGS耳机
人工智能