Skip to content

Schema 管理

Schema 管理提供了一个集中管理和验证主题消息数据的模式,以及通过网络对数据进行序列化和反序列化的能力。MQTT 主题的发布者和订阅者可以使用 Schema 来确保数据的一致性和兼容性。Schema 管理是规则引擎的关键组成部分,可适配多种场景的设备接入和规则设计,有助于确保数据质量、遵守规范、提高应用程序开发效率和系统性能。

理解 Schema

Schema 模式定义了数据的结构。它定义了允许的数据类型、格式和关系。模式是数据的蓝图,描述数据记录的结构、单个字段的数据类型、字段之间的关系以及适用于数据的任何约束或规则。

Schema 可用于各种数据处理系统,包括数据库、消息服务以及分布式事件和数据处理框架。它们有助于确保数据的一致性和准确性,并能被不同的系统和应用程序有效地处理和分析。促进了不同系统和组织之间的数据共享和互操作性。

用户可以在 Schema 管理中定义 Schema,用户在规则中使用定义好的 Schema,再通过数据集成将客户端数据转发到不同的数据服务中。同时也可以将应用或者数据服务中的数据通过 Schema 发送给客户端实现双向的数据流转。

schema

Schema 管理具有多种优势,包括数据验证、兼容性检查、版本控制和迭代演进。它还能简化数据管道的开发和维护,降低数据兼容性问题、数据损坏和数据丢失的风险。

创建 Schema

如果您已经开通数据智能中心,您可以通过点击部署左侧菜单中的数据智能中心 -> Schema 管理进入 Schema 管理页面。在该页面中,您可以创建 Schema。EMQX Platform 支持创建 Avro, Protobuf 和 JSON Schema 格式的 Schema。

  1. 点击页面右上角的新建按钮,进入新建 Schema 页面,设置以下字段:

    • 名称:用于标识 Schema。

      • 名称可用于 Schema 验证和数据转换规则中。
      • 名称可用于数据集成的规则 SQL 编解码函数中,示例:SELECT schema_encode("<name>", payload)
    • 备注:可选,添加备注信息。

    • 类型:从下拉菜单中选择 Schema 的类型,可选项为 AvroProtobufJSON Schema

    • Schema:输入对应类型的 Schema,示例:

      • Avro:
      json
      {
        "type": "record",
        "name": "Device",
        "fields": [
          { "name": "id", "type": "string" },
          { "name": "temp", "type": "int" }
        ]
      }
      • Protobuf:
      proto
      message Device {
        required string id = 1;
        required uint32 temp = 2;
      }
      • JSON Schema,支持使用 JSON 数据生成 JSON Schema:

      generate_JSON_schema

      json
      {
          "$schema": "http://json-schema.org/draft-06/schema#",
          "type": "object",
          "properties": {
            "temp": {
              "type": "integer"
            },
            "id": {
              "type": "string"
            }
          },
         "required": [
            "temp",
            "id"
         ]
      }
  2. 点击确认创建成功后返回 Schema 列表页面。

管理 Schema

Schema 列表页面列出了所有已创建的 Schema。您可以对它们进行管理。

编辑 Schema

在 Schema 列表中,点击操作中的编辑图标,您可以修改备注、Schema 类型和 Schema。

删除 Schema

在 Schema 列表中,点击操作中的删除图标,二次确认后即可删除 Schema。