数据格式
概述
在本指南中,您可以了解在使用 MongoDB Kafka 连接器和您的管道时使用的数据格式。
本指南使用以下示例文档来展示不同格式的行为
{company:"MongoDB"}
JSON
JSON是一种基于JavaScript对象表示法的数据处理格式。您可以用以下方式表示JSON示例文档:
{"company":"MongoDB"}
在使用连接器时,您可能会遇到以下与JSON相关的数据格式
有关JSON的更多信息,请参阅官方JSON网站。
原始JSON
原始JSON是一种由字符串组成的JSON对象数据格式。您可以用以下方式表示原始JSON中的示例文档:
"{\"company\":\"MongoDB\"}"
当在源或目标连接器上指定字符串转换器时,您会使用原始JSON。要查看指定了字符串转换器的连接器配置,请参阅转换器指南。
二进制序列化编码
BSON 是一种类似于 JSON 的对象的二进制序列化编码。BSON 以这种方式编码 示例文档
\x1a\x00\x00\x00\x02company\x00\x08\x00\x00\x00MongoDB\x00\x00
您的连接器使用 BSON 格式从 MongoDB 部署发送和接收文档。
有关 BSON 的更多信息,请参阅 BSON 规范
JSON Schema
JSON Schema 是一种用于指定 JSON 对象 模式 的语法。模式是与 Apache Kafka 主题相关联的定义,它定义了该主题的有效值。
您可以使用 JSON Schema 以这种方式为 示例文档 指定模式
{ "$schema":"https://json-schema.fullstack.org.cn/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 Schema 转换器应用于连接器时,使用 JSON Schema。要查看指定 JSON Schema 转换器的连接器配置,请参阅 转换器 指南。
更多信息,请参阅官方JSON Schema网站。
Avro
Apache Avro是一个开源框架,用于序列化和传输由模式描述的数据。Avro定义了两个与连接器相关的数据格式
有关Apache Avro的更多信息,请参阅Apache Avro文档。
Avro模式
Avro模式是一种基于JSON的模式定义语法。Avro模式支持以下数据类型的指定
注意
不支持的Avro类型
连接器不支持以下Avro类型
枚举
类型。请使用字符串
代替。fixed
类型。请使用bytes
代替。null
作为原始类型。但是,null
作为union
中的元素是支持的。具有超过2个元素的
union
类型。具有多个
null
元素的union
类型。
重要
接收连接器和逻辑类型
MongoDB Kafka接收连接器支持所有Avro模式原始和复杂类型,但是接收连接器仅支持以下逻辑类型
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 接收数据时,您使用字节序列。有关转换器的更多信息,请参阅 转换器指南。