对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

应用模式

在本指南中,您可以了解如何在 MongoDB Kafka 源连接器中对传入文档应用模式。

Kafka Connect 中有两种类型的模式,即密钥模式和值模式。Kafka Connect 向 Apache Kafka 发送包含值和密钥的消息。密钥模式执行发送到 Apache Kafka 的消息中的密钥的结构。值模式执行发送到 Apache Kafka 的消息中的值的结构。

重要

术语说明

本指南使用 Apache Kafka 对“键”的定义,该定义与 BSON 定义略有不同。在 BSON中,“键”是文档中字段的唯一字符串标识符。

在 Apache Kafka 中,“密钥”是在消息中发送的字节数组,用于确定将消息写入主题的哪个分区。Kafka 密钥可以是其他密钥或者 null 的副本。

在连接器中指定模式是可选项,您可以指定以下任意模式组合:

  • 仅值模式

  • 仅密钥模式

  • 值模式和密钥模式

  • No schemas

提示

模式的好处

要查看关于使用 Kafka Connect 中的模式有何好处的讨论,请参阅 Confluent 的这篇文章。

如果您想通过 Apache Kafka 发送特定数据格式的数据,如 Apache Avro 或 JSON Schema,请参阅转换器指南。

要学习;了解有关Apache Kafka中键和值的更多信息,请参阅Apache Kafka官方简介。

连接器提供两种默认模式:

要了解有关变更事件的更多信息,请参阅变更流指南。

要学习;了解有关默认模式的更多信息,请参阅MongoDB Kafka Connector源代码中的默认模式。

The connector provides a default key schema for the _id field of change event documents. You should use the default key schema unless you remove the _id field from your change event document using either of the transformations described in this guide here.

If you specify either of these transformations and want to use a key schema for your incoming documents, you must specify a key schema as described in the specify a schema section of this guide.

您可以使用以下选项启用默认密钥模式:

output.format.key=schema

The connector provides a default value schema for change event documents. You should use the default value schema unless you transform your change event documents as described in this guide here.

如果您指定一种转换,并希望对传入文档使用值模式,则必须使用本指南中转换后文档的模式部分描述的机制。

您可以使用以下选项启用默认值模式:

output.format.value=schema

您可以通过两种方式在 Source 连接器中转换变更事件文档:

  • publish.full.document.only=true 选项

  • 用于修改变更事件文档结构的聚合管道

如果转换 MongoDB 变更事件文档,则必须执行以下操作才能应用模式:

要了解有关上述配置选项的更多信息,请参阅变更流属性页面。

您可以使用 Avro 架构语法指定传入文档的模式。单击以下标签页查看如何为文档值和键指定模式:

output.format.key=schema
output.schema.key=<your avro schema>

要查看演示指定模式的示例,请参阅指定模式用法示例。

要了解关于 Avro 架构的更多信息,请参阅数据格式指南。

重要

转换器

如果您想使用 Avro 二进制编码通过 Apache Kafka 发送数据,则必须使用 Avro 转换器。有关更多信息,请参阅转换器指南。

You can have your source connector infer a schema for incoming documents. This option works well for development and for data sources that do not frequently change structure, but for most production deployments we recommend that you specify a schema.

您可以通过指定以下选项让连接器推断模式:

output.format.value=schema
output.schema.infer.value=true

Source 连接器可以推断包含数组中存储的嵌套文档的传入文档的模式。从连接器版本 1.9 开始,如果以下情况描述的嵌套文档之间存在差异,模式推断将为字段收集适当的数据类型,而不是默认为 string 类型分配:

  • 某个字段存在于一个文档中,但在另一个文档中缺失。

  • 某个字段存在于一个文档中,但在另一个文档中为 null。

  • 字段是一个数组,在一个文档中包含任何类型的元素,但在另一个文档中包含其他元素或其他数据类型的元素。

  • 字段是一个数组,在一个文档中包含任意类型的元素,但在另一个文档中包含空数组。

如果嵌套文档之间的字段类型发生冲突,连接器会将冲突下推到字段的模式中,并默认分配为 string 类型。

注意

无法推断密钥模式

The connector does not support key schema inference. If you want to use a key schema and transform your MongoDB change event documents, you must specify a key schema as described in the specify schemas section of this guide.