Skip to main content

Azure Digital Twins入门 - 术语介绍

分类:  Azure物联网 标签:  #Azure #Digitial Twin # 发布于: 2023-06-15 20:09:06

Azure平台上有不少服务都喜欢称为Twin,像Azure IoT Hub中的Device TwinModule Twin以及我们这个服务Azure Digital Twins中的Twin, 如何理解Twin? 其实完全可以使用另外一个名称逻辑对象, 例如: Device Twin -> 逻辑设备Module twin -> 逻辑模块Azure Digital Twins 就可以理解为实体资产在计算机信息系统中的逻辑对应,实体资产的数字化。

为了更好的理解整个服务,我们单独使用一个小结来描述一下Azure Digital Twins服务的专用术语。

DTDL Model

基于语言JSON-LD-Base Digital Twin Definition Language (DTDL)创建的模型,称为DTDL Model, 需要注意的是DTDL是一种标准语言,并不是服务Azure Digital Twins服务所专有的。如果想了解DTDL标准定义,您可以访问:https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md

同时需要注意的是Azure Digital Twins使用DTDL语言定义数字模型,但是Azure Digital Twins并不支持所有的DTDL特性,例如:不支持可写属性, DTDL命令等等。

DTDL Model可以包含的元素

DTDL Model是使用JSON格式表示信息,Azure Digital Twins模型需要遵守一些特定的规则,在模型中顶级定义的项目必须是Interface, 该类型定义了整个模型。

每个模型可以包含如下的一些字段:

  1. Property: 属性,需要注意的是属性字段是保存在Azure Digital Twins服务实例中。
  2. Telemetry: 遥测数据,服务不保存该类型的数据。
  3. Relationship: 关系映射。
  4. Component: 组件。

给一个例子大家直观的感受一下,一个模型是如何定义的:

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;2",
  "displayName": "Home",
  "contents": [
    {
      "@type": "Property",
      "name": "id",
      "schema": "string"     
    },    
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1"
    }
  ]
}

以上个字段的含义我们之后再介绍,如果大家想尽快的得到解释,您可以访问:https://docs.microsoft.com/en-us/azure/digital-twins/concepts-models

Ontologies

我们之前的文章中介绍过服务Azure Digital Twins通过创建数字模型,以及数字twin, 并与之关联,形成Twin Graph, 通过这些概念一起来完成整个数字化建模。 微软联合各领域的专家,预先为某些标准领域已经创建了数字化模型,用户可以直接使用这些模型,这些预定义模型称为Ontologies, 更详细的介绍,您可以参考:https://docs.microsoft.com/en-us/azure/digital-twins/concepts-ontologies

Digital TwinTwin Graph

在使用DTDL Model创建模型并上传到Azure Digital Twin中后,您可以使用模型来创建实体对象的数字映射了,这称之为Digital Twin, Digital TwinModel之间的关系很类似于类和对象的关系,模型定义类型,Digital Twin定义实际的指向,或者映射。同时我们需要注意到我们在定义模型的时候可以定义关系映射,在创建Digital Twin之后,也可以创建关系映射,Digital Twin和他们之间的关系映射就形成了Twin Graph, 我们可以称之为数字对象的关系映射图,当然简单点,就是Twin Graph

Query Language

为了使用我们定义好的数字化关系,Azure专门提供的类似SQL的查询语言,需要注意的是,它仅仅可以查询属性, 模型,关系映射,关系映射的属性几类。

Query Unit -> QU

这是一个度量单位,被微软用于统计用户查询服务时所耗费的成本,它综合了用户一个查询可能耗费的CPU, 内存,网络带宽等等,主要功能时用于计费的,向用户收费的一个标准。

Data ingress and egress

我们需要理解的是Azure Digital Twin服务在整个数字化方案中仅仅是其中一环,因此在这个服务中它是需要接收数据输入和数据输出的,最为典型的例子是,例如从Azure IoT Hub中输入事件和遥测数据,同时将一些数据输出其他的服务中,例如,输出到Azure Data Explorer,可以用于查询历史数据,输出到Azure Synapase Analytics中用于数据分析等等。

Data Ingress指向该服务中输入数据。
Data egress指从该服务中输出数据。

Endpoint 和 Event Route

之前我们有提及数据输入和输出,这两个概念专门用于数据输出,Endpoint用于定义可以输出的服务类型,目前支持:

  • Event Grid
  • Event Hub
  • Service Bus

Event Route用于定义事件路由。

主要的术语介绍就到这里结束了,从下一个小结开始,我们会从创建本实例开始到设置本地环境,演示如何开始使用该服务以及提供的工具。