Schema 管理
Schema 管理提供了一个集中管理和验证主题消息数据的模式,以及通过网络对数据进行序列化和反序列化的能力。MQTT 主题的发布者和订阅者可以使用 Schema 来确保数据的一致性和兼容性。Schema 管理是规则引擎的关键组成部分,可适配多种场景的设备接入和规则设计,有助于确保数据质量、遵守规范、提高应用程序开发效率和系统性能。
理解 Schema
Schema 模式定义了数据的结构。它定义了允许的数据类型、格式和关系。模式是数据的蓝图,描述数据记录的结构、单个字段的数据类型、字段之间的关系以及适用于数据的任何约束或规则。
Schema 可用于各种数据处理系统,包括数据库、消息服务以及分布式事件和数据处理框架。它们有助于确保数据的一致性和准确性,并能被不同的系统和应用程序有效地处理和分析。促进了不同系统和组织之间的数据共享和互操作性。
用户可以在 Schema 管理中定义 Schema,用户在规则中使用定义好的 Schema,再通过数据集成将客户端数据转发到不同的数据服务中。同时也可以将应用或者数据服务中的数据通过 Schema 发送给客户端实现双向的数据流转。
Schema 管理具有多种优势,包括数据验证、兼容性检查、版本控制和迭代演进。它还能简化数据管道的开发和维护,降低数据兼容性问题、数据损坏和数据丢失的风险。
创建 Schema
如果您已经开通数据智能中心,您可以通过点击部署左侧菜单中的数据智能中心 -> Schema 管理进入 Schema 管理页面。在该页面中,您可以创建 Schema。EMQX Platform 支持创建 Avro, Protobuf 和 JSON Schema 格式的 Schema。
点击页面右上角的新建按钮,进入新建 Schema 页面,设置以下字段:
名称:用于标识 Schema。
- 名称可用于 Schema 验证和数据转换规则中。
- 名称可用于数据集成的规则 SQL 编解码函数中,示例:
SELECT schema_encode("<name>", payload)
。
备注:可选,添加备注信息。
类型:从下拉菜单中选择 Schema 的类型,可选项为
Avro
、Protobuf
和JSON Schema
。Schema:输入对应类型的 Schema,示例:
- Avro:
json{ "type": "record", "name": "Device", "fields": [ { "name": "id", "type": "string" }, { "name": "temp", "type": "int" } ] }
- Protobuf:
protomessage Device { required string id = 1; required uint32 temp = 2; }
- JSON Schema,支持使用 JSON 数据生成 JSON Schema:
json{ "$schema": "http://json-schema.org/draft-06/schema#", "type": "object", "properties": { "temp": { "type": "integer" }, "id": { "type": "string" } }, "required": [ "temp", "id" ] }
点击确认创建成功后返回 Schema 列表页面。
管理 Schema
Schema 列表页面列出了所有已创建的 Schema。您可以对它们进行管理。
编辑 Schema
在 Schema 列表中,点击操作中的编辑图标,您可以修改备注、Schema 类型和 Schema。
删除 Schema
在 Schema 列表中,点击操作中的删除图标,二次确认后即可删除 Schema。