スキーマの適用
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
Apache Avro や JSON schema などの特定のデータ形式で Apache Kafka を介してデータを送信する場合は、 変換ガイド をご覧ください。
Apache Kafka のキーと値の詳細については、 公式 Apache Kafka の紹介 を参照してください。
Default Schemas
connectorは 2 つのデフォルトのスキーマを提供します。
変更イベントの詳細については、 変更ストリーム に関するガイドをご覧ください。
デフォルト スキーマの詳細について は、 MongoDB Kafka Connector ソース コードの こちら のデフォルト スキーマを参照してください。
キー スキーマ
コネクタは、 変更イベント ドキュメントの_id
フィールドのデフォルトのキー スキーマを提供します。 このガイドで説明されている変換のいずれかを使用して、変更イベント ドキュメントから_id
フィールドを削除しない限り、デフォルトのキー スキーマを使用する必要があります。
これらの変換のいずれかを指定し、受信ドキュメントにキー スキーマを使用する場合は、このガイドの「 スキーマの指定 」セクションで説明されているように、キー スキーマを指定する必要があります。
次のオプションを使用して、デフォルトのキー スキーマを有効にできます。
output.format.key=schema
値スキーマ
connectorは、変更イベント ドキュメントのデフォルト値スキーマを提供します。 このガイドで説明されているように、変更イベント ドキュメントを変換しない限り、デフォルト値スキーマを使用する必要があります。
これらの変換のいずれかを指定し、受信ドキュメントに 値スキーマを使用する場合は、このガイドの「 変換されたドキュメントのスキーマ 」セクションで説明されているメカニズムの 1 つを使用する必要があります。
次のオプションを使用して、デフォルト値スキーマを有効にできます。
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 変換を使用する必要があります。 詳細については、変換に関するガイド を参照してください。
スキーマの推論
ソース コネクタで受信ドキュメントのスキーマを推論することができます。 このオプションは、開発や構造を頻繁に変更しないデータソースに適していますが、ほとんどの本番環境の配置ではスキーマを指定することをお勧めします。
次のオプションを指定して、コネクターにスキーマを推論させることができます。
output.format.value=schema output.schema.infer.value=true
ソース コネクタは、配列に保存されているネストされたドキュメントを含む受信ドキュメントのスキーマを推測できます。 connector バージョン 1.9 以降では、ネストされたドキュメント間に次のケースで説明される違いがある場合、 string
型の割り当てにデフォルト設定される代わりに、スキーマ推論によりフィールドの適切なデータ型が収集されます。
フィールドが、あるドキュメントには存在するが、別のドキュメントには欠落している。
フィールドがあるドキュメントには フィールドが存在しますが、別のドキュメントには
null
が存在します。フィールドは、あるドキュメントには任意の型の要素を含む配列ですが、別のドキュメントには追加の要素または他のデータ型の要素があります。
フィールドは、あるドキュメントでは任意の型の要素を含む配列ですが、別のドキュメントでは空の配列です。
ネストされたドキュメント間でフィールド型が競合する場合、コネクターは競合をフィールドのスキーマにプッシュダウンし、デフォルトでstring
型の割り当てになります。
注意
キー スキーマを推論できません
connector はキー スキーマ推論をサポートしていません。 キー スキーマを使用して MongoDB 変更イベント ドキュメントを変換する場合は、このガイドの「 スキーマの指定 」セクションで説明されているように、キー スキーマを指定する必要があります。