Data Formats
Overview
在本指南中,您可以了解在使用 MongoDB Kafka Connector 和管道时所使用的数据格式。
本指南使用以下样本文档来显示不同格式的行为:
{company:"MongoDB"}
JSON
JSON 是一种基于 JavaScript 对象表示法的数据交换格式。 您可以按如下方式用 JSON 表示示例文档:
{"company":"MongoDB"}
在使用连接器时,您可能会遇到以下与 JSON 有关的数据格式:
有关 JSON 的更多信息,请参阅 JSON 官方网站。
Raw JSON
原始 JSON 是一种由写入为字符串的 JSON 对象组成的数据格式。 您可以按如下方式用原始 JSON 表示样本文档:
"{\"company\":\"MongoDB\"}"
JSONstring在源连接器或接收器Connector器上指定 转换器时,可以使用原始 。要查看指定string转换器的Connector配置,请参阅 转换器指南。
BSON
BSON 是类似 JSON 对象的二进制序列化编码。BSON 对示例文档进行如下编码:
\x1a\x00\x00\x00\x02company\x00\x08\x00\x00\x00MongoDB\x00\x00
连接器使用 BSON 格式从 MongoDB 部署发送和接收文档。
有关BSON的更多信息,请参阅 BSON规范。
JSON schema
JSON 模式是一种用于为 JSON 对象指定模式的语法。模式是附加到 Apache Kafka 主题的定义,用于定义该主题的有效值。
您可以使用 JSON schema 为示例文档指定模式,如下所示:
{ "$schema":"http://json-schema.org/draft-07/schema", "$id":"unique id", "type":"object", "title":"Example Schema", "description":"JSON Schema for the sample document.", "required":[ "company" ], "properties":{ "company":{ "$id":"another unique id", "type":"string", "title":"Company", "description":"A field to hold the name of a company" } }, "additionalProperties":false }
将 JSON 模式转换器应用到连接器时,您可以使用 JSON 模式。要查看指定 JSON 模式转换器的连接器配置,请参阅转换器指南。
有关更多信息,请参阅官方 JSON schema 网站。
Avro
Apache Avro 是一个开源框架,用于序列化和传输模式描述的数据。Avro 定义两种与连接器相关的数据格式:
有关 Apache Avro 的更多信息,请参阅 Apache Avro 文档。
Avro Schema
Avro 模式是一种基于 JSON 的模式定义语法。Avro 模式支持以下数据类型的规范:
警告
不支持的 Avro 类型
该连接器不支持以下 Avro 类型:
enum
类型。改用string
。fixed
类型。改用bytes
。null
作为原始类型。但是,支持将null
作为union
中的元素。union
类型,包含 2 个以上元素。union
类型,包含多个null
元素。
重要
Sink 连接器和逻辑类型
MongoDB Kafka Sink 连接器支持所有 Avro 模式基元类型和复杂类型,但是 Sink 连接器仅支持以下逻辑类型:
decimal
date
time-millis
time-micros
timestamp-millis
timestamp-micros
您可按如下方式为示例文档构建 Avro 模式:
{ "type": "record", "name": "example", "doc": "example documents have a company field", "fields": [ { "name": "company", "type": "string" } ] }
为 MongoDB Kafka 源连接器定义模式时,您可以使用 Avro 模式。
有关所有 Avro 模式类型的列表,请参阅 Apache Avro 规范。
Avro 二进制编码
Avro 为 Avro 模式定义的 JSON 对象指定二进制序列化编码。
如果使用前面的 Avro 模式,您就可以用 Avro 二进制编码表示示例文档,如下所示:
\x0eMongoDB
当您在源连接器或接收器连接器上指定 Avro 转换器时,您可以使用 Avro 二进制编码。要查看指定 Avro 转换器的连接器配置,请参阅转换器指南。
要学习;了解有关 Avro 二进制编码的更多信息,请参阅 Avro 规范的此部分。
字节数组
字节数组是非结构化字节的连续序列。
您可以使用上述任何编码将样本文档表示为字节数组。
当转换器向 Apache Kafka 发送数据或接收来自 Apache Kafka 的数据时,可以使用字节数组。有关转换器的更多信息,请参阅转换器指南。