8.2. Debezium 変更イベントからのソースレコード after 状態の抽出
Debezium データ変更イベントには、多くの情報を提供する複雑な構造があります。Debezium 変更イベントを実行する Kafka レコードには、このすべての情報が含まれます。ただし、Kafka エコシステムの一部は、フィールド名と値のフラット構造を提供する Kafka レコードを想定する可能性があります。このようなレコードを提供するために、Debezium は ExtractNewRecordState
単一のメッセージ変換(SMT)を提供します。Debezium 変更イベントが含まれる Kafka レコードよりも単純なフォーマットを持つ Kafka レコードが必要な場合に、この変換を設定します。
ExtractNewRecordState
変換は Kafka Connect SMT です。
この変換は SQL データベースコネクターのみで利用できます。
詳細は以下のトピックを参照してください。
8.2.1. Debezium 変更イベント構造の説明
Debezium は、複雑な構造を持つデータ変更イベントを生成します。各イベントは、以下の 3 つの部分で構成されます。
メタデータ。これには以下が含まれますが、これに限定されません。
- 変更後の操作
- 変更が行われたデータベース名やテーブル名などのソース情報
- 変更が行われた時点のタイムスタンプ
- オプションのトランザクション情報
- 変更前の行データ
- 変更後の行データ
たとえば、UPDATE
変更イベントの構造は以下のようになります。
{ "op": "u", "source": { ... }, "ts_ms" : "...", "before" : { "field1" : "oldvalue1", "field2" : "oldvalue2" }, "after" : { "field1" : "newvalue1", "field2" : "newvalue2" } }
この複雑な形式は、システムで発生する変更に関する最も重要な情報を提供します。ただし、Kafka エコシステムに他のコネクターまたはその他の部分では、以下のような単純な形式でデータが想定されます。
{ "field1" : "newvalue1", "field2" : "newvalue2" }
コンシューマーに必要な Kafka レコード形式を提供するには、ExtractNewRecordState
SMT を設定します。