Overview
このガイドでは、MongoDB Kafka ソース コネクタで受信ドキュメントにスキーマを適用する方法を学習できます。
Kafka Connect には、キー スキーマと値スキーマの 2 つのタイプのスキーマがあります。 Kafka Connect は、値とキーの両方を含むメッセージを Apache Kafka に送信します。 キー スキーマは、Apache Kafka に送信されるメッセージ内のキーの構造を強制します。 値スキーマは、Apache Kafka に送信されるメッセージの値の構造を強制します。
重要
用語に関する注釈
このガイドでは、BSON の定義とは若干異なる「key」という単語の Apache Kafka の定義を使用します。 BSONでは、「キー」は、ドキュメント内のフィールドの一意のstring識別子です。
Apache Kafka では、「キー」は、メッセージを書き込むトピックのパーティションを決定するために使用されるメッセージで送信されるバイト配列です。 Kafka キーは、他のキーまたはnullの複製が可能です。
connector でのスキーマの指定は任意であり、次のいずれかのスキーマの組み合わせを指定できます。
値スキーマのみ
キー スキーマのみ
値とキー スキーマの両方
No schemas
Tip
スキーマの利点
To see a discussion on the benefits of using schemas with Kafka Connect, see this article from Confluent.
Apache Avro や JSON schema などの特定のデータ形式で Apache Kafka を介してデータを送信する場合は、「変換ツール」ガイドを参照してください。
To learn more about keys and values in Apache Kafka, see the official Apache Kafka introduction.
Default Schemas
connectorは 2 つのデフォルトのスキーマを提供します。
変更イベントの詳細については、 変更ストリーム に関するガイドをご覧ください。
To learn more about default schemas, see the default schemas here in the MongoDB Kafka Connector source code.
キー スキーマ
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.
If you specify either of these transformations and want to use a value schema for your incoming documents, you must use one of the mechanisms described in the schemas for transformed documents section of this guide.
次のオプションを使用して、デフォルト値スキーマを有効にできます。
output.format.value=schema
変換されたドキュメントのスキーマ
ソース コネクタで変更イベント ドキュメントを変換するには、次の 2 つの方法があります。
publish.full.document.only=trueオプション変更イベント ドキュメントの構造を変更する集計パイプライン
MongoDB 変更イベント ドキュメントを変換する場合、スキーマを適用するには次の操作を行う必要があります。
上記の構成オプションの詳細については、「 Change Stream プロパティ」ページを参照してください。
スキーマを指定する
Avro スキーマ構文を使用して、受信ドキュメントのスキーマを指定できます。 ドキュメント値とキーのスキーマを指定する方法を確認するには、次のタブをクリックします。
output.format.key=schema output.schema.key=<your avro schema>
output.format.value=schema output.schema.value=<your avro schema>
スキーマを指定する方法を示す例については、「 スキーマの指定」の使用例を参照してください。
Avro schema の詳細については、「データ形式」のガイドを参照してください。
重要
変換子
Atlas のバイナリ エンコーディングで 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
ソース コネクタは、配列に保存されているネストされたドキュメントを含む受信ドキュメントのスキーマを推測できます。 connector バージョン 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.