当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/334008.html

相关文章:

  • OpenAI TTS API + Web 前端 AudioContext 实战方案
  • 【Web后端】Django、flask及其场景——以构建系统原型为例
  • 《深度解构:构建浏览器端Redis控制台的WebSocket协议核心技术》
  • Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯
  • 【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
  • C#WPF实战出真汁08--【消费开单】--餐桌面板展示
  • C语言基础:(十五)深入理解指针(5)
  • 数据清洗:数据处理的基石
  • 【C++】异常详解(万字解读)
  • 【lubancat】鲁班猫4实现开机后自动播放视频
  • MySQL查询性能慢时索引失效的排查与优化实践
  • AI驱动的性能测试:如何用机器学习预测系统瓶颈?
  • 开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载
  • 储能领域大数据平台的设计中如何使用 Hadoop、Spark、Flink 等组件实现数据采集、清洗、存储及实时 / 离线计算,支持储能系统分析与预测
  • 三天速通 Vue+Flask+SQLite 项目+阿里云轻量应用级服务器【宝塔面板】②
  • IO流与单例模式
  • java项目怎么实现用户行为分析、漏斗转化、数据可视化报表。
  • 奈飞工厂 —— 算法优化实战推荐
  • QT基础入门
  • AI热点周报(8.10~8.16):AI界“冰火两重天“,GPT-5陷入热议,DeepSeek R2模型训练受阻?
  • SpringBoot学习日记(九)
  • uv - 基本使用
  • 【LeetCode 热题 100】70. 爬楼梯——(解法二)自底向上
  • [1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
  • 双指针-leetcode算法题总结+练习
  • Ubuntu2204server系统安装后的初始化配置报错
  • Windows 基于ACL(访问控制列表)的权限管理
  • FTP上传文件错误
  • C# 中常用 IO 类的核心属性表格及使用示例
  • 流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(下)