创建元数据存储桶

本指南介绍了如何创建元数据存储桶。您可以使用配置 API 或制造数据引擎 (MDE) 网页界面创建元数据存储桶。

准备工作

在开始创建存储桶之前,请先阅读 MDE 文档中的如何对元数据进行建模部分。

存储分区命名

创建存储桶时,名称在 MDE 部署中必须是唯一的。存储分区名称不得包含空格或特殊字符,例如 &@%

创建元数据存储桶

您可以使用终端或控制台界面创建元数据存储桶。

REST

执行以下 REST API 请求:

POST /metadata/v1/buckets

  {
    "name": "BUCKET_NAME",
    "type": "BUCKET_TYPE",
    "schema": "BUCKET_SCHEMA",
    "provider": "local",
    "attributes": {
      "instanceOverwriteMode": "INSTANCE_OVERWRITE_MODE"
    }
  }

替换以下内容:

  • BUCKET_NAME:要创建的存储桶的名称。
  • BUCKET_TYPE:要创建的存储桶的类型。必须是 TAGRECORDLOOKUP 中的一个。TAG 存储桶中元数据实例的 natural_key 必须是标记名称。RECORD 存储桶中元数据实例的 natural_key 可以是任何键。LOOKUP 存储桶中元数据实例的 natural_key 可以是任何键,但记录无法引用查找存储桶中的实例,并且实例不会写入任何数据接收器。查找存储分区仅用作参考数据源,解析器可以使用 Whistle 函数 lookupByKey 检索这些数据,并使用这些数据来丰富记录。
  • BUCKET_SCHEMA:相应分桶的 JSON 架构。该架构限制了可在相应存储桶中创建的实例。
  • INSTANCE_OVERWRITE_MODETRUEFALSE。确定是通过将提供的实例与给定自然键的最新实例合并来创建新实例,还是按原样创建新实例。

控制台

如需使用控制台添加新的元数据存储桶,请点击云管理部分顶部菜单中的元数据部分。元数据配置页面列出了 MDE 实例中的可用存储分区

“类型”部分 - 元数据列表

对于每个存储分区,系统会提供以下信息:

  • 名称:相应存储桶的名称。每个名称都必须是唯一的。
  • 版本:相应存储桶的版本。默认情况下,系统仅显示最新可用版本。如需显示更早的版本,请取消选中“仅限最新版本”复选框。
  • 分桶类型:直观呈现分桶类型。系统支持三种不同的分桶类型:
    1. 标记:符合指定标记条件的存储分区。它们与某种类型相关联,并由该给定类型的所有标记继承。它们可以在标记级进行实例化,因为它们旨在限定变量本身,而不是变量的任何特定记录。标记桶的一个示例可以是标记的“资产层次结构”或“计量单位”。
    2. 记录:记录分桶可限定给定标记的每条记录。它们还与类型相关联,并由标记继承,但在记录级别实例化。每个记录在有限的一组分桶实例中应具有不同的值。记录桶的示例可以是“班次”或“操作员名称”。
    3. 参考:定义一组键值对(介于用户定义的键和实例之间)的存储分区。

如需创建新的,请点击添加新的元数据桶

“类型”部分 - 类型列表

在侧边栏中显示的表单中填写必要的存储分区参数:

  • 存储桶名称:用户为存储桶定义的唯一名称。
  • 存储分区类型:用于定义存储分区类。
  • 实例更新模式:用于指定为元数据存储桶指定的实例更新类型:
    1. 实例替换:即使现有实例不完整,也会被从边缘接收到的最新实例替换。
    2. 实例合并:将现有实例与从边缘收到的最新实例合并。仅替换新边实例中包含的属性。
  • JSON 架构:定义了桶结构的 JSON Schema。必须是有效的架构。所有元数据实例都将根据存储桶架构进行验证。

以下是默认配置软件包提供的默认元数据存储桶的示例 JSON Schema

{
  "$id": "https://gmde.cloud/tag.schema.json",
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "title": "Tag metadata bucket",
  "type": "object",
  "properties": {
    "datatype": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "registerId": {
      "type": "string"
    },
    "edgeTagName": {
      "type": "string"
    },
    "tagName": {
      "description": "Tag name",
      "type": "string"
    },
    "deviceID": {
      "type": "string"
    },
    "deviceName": {
      "type": "string"
    },
    "deviceMetadata": {
      "type": "object"
    }
  },
  "required": ["tagName"],
  "additionalProperties": false
}