12.5.2. Debezium イベントフラット化変換の動作
イベントフラット化 SMT は、Kafka レコードの Debezium 変更イベントから after
フィールドを抽出します。SMT は、元の変更イベントを after
フィールドのみに置き換え、単純な Kafka レコードを作成します。
Debezium コネクターまたは Debezium コネクターから出力されるメッセージを使用するシンクコネクターに、イベントフラット化 SMT を設定することができます。シンクコネクターにイベントフラット化を設定するメリットは、Apache Kafka に保存されるレコードに Debezium の変更イベント全体が含まれることです。SMT を元のコネクターまたはシンクコネクターに適用するかどうかの判断は、特定のユースケースによります。
以下の操作のいずれかを実行するように変換を設定することができます。
- 変更イベントからのメタデータを簡素化した Kafka レコードに追加する。デフォルト動作では、SMT はメタデータを追加しません。
-
ストリームに
DELETE
操作の変更イベントが含まれる Kafka レコードを保持します。ほとんどのコンシューマーが処理できないため、SMT はDELETE
操作変更イベントの Kafka レコードを破棄することです。
データベース DELETE
操作が原因で、Debezium は 2 つの Kafka レコードを生成します。
-
"op": "d"、
前の
行データ、その他のフィールドを含むレコード。 -
削除された行と
null
の値と同じキーを持つトームストーンレコード。このレコードは Apache Kafka のマーカーです。これは、ログコンパクション によりこのキーを持つすべてのレコードが削除されることを意味します。
前述の 行
データが含まれるレコードをドロップする代わりに、イベントフラット化 SMT を設定して以下のいずれかを行うように設定できます。
-
レコードをストリームに維持し、これを
"value": "null"
フィールドのみを持つように編集します。 -
レコードをストリームに維持し、追加された
"__deleted": "true"
エントリーでbefore
フィールドに含まれていたキー/値のペアが含まれる値
フィールドを持つように編集します。
同様に、トゥームストーンレコードをドロップする代わりに、イベントフラット化 SMT を設定してトゥームストーンレコードをストリームに維持することができます。