4.3.5.2.3. 削除イベント
ここまでで、create と update イベントのサンプルを確認しました。次に、同じテーブルの 削除 イベントの値を見てみましょう。ここでも、値の schema
部分は create および update イベントと全く同じになります。
ペイロード
部分を確認すると、create または updateイベントペイロードと比べて多くの違いがあります。
-
op
フィールドの値はd
になっており、この行が削除されたことを示しています。 -
before
フィールドは、データベースのコミットで削除した行の状態を表しています。 -
after
フィールドが null で、行が存在しなくなったことが分かります。 -
source
フィールド構造には以前と同じ値が多数ありますが、ts_ms
フィールド、commit_lsn
フィールド、およびchange_lsn
フィールドが変更されました。 -
ts_ms
は、Debezium がこのイベントを処理したタイムスタンプを示します。
このイベントでは、この行の削除の処理に使用できるあらゆる種類の情報をコンシューマーに提供します。
SQL Server コネクターのイベントは、Kafka ログコンパクション と動作するように設計されています。これにより、すべてのキーの最新のメッセージが保持される限り、古いメッセージを削除できます。これにより、トピックに完全なデータセットが含まれ、キーベースの状態のリロードに使用できるようにするとともに、 Kafka がストレージ領域を確保できるようにします。
行が削除された場合でも、Kafka は同じキーを持つ以前のメッセージをすべて削除できるため、上記の削除 イベントの値はログコンパクションで動作します。ただし、メッセージ値が null
の場合のみ、Kafka は同じキーを持つ すべてのメッセージ を削除できることを認識します。これを可能にするには、SQL Server コネクターは、null
値以外で同じキーを持つ特別な廃棄( tombstone )イベントで 削除 イベントに従います。