3.2.5. トランザクション境界を表す Debezium Db2 コネクターによって生成されたイベント

Debezium は、トランザクション境界を表し、変更データイベントメッセージをエンリッチするイベントを生成できます。トランザクション BEGIN および END ごとに、Debezium は以下のフィールドが含まれるイベントを生成します。

  • status: BEGIN または END
  • id: 一意のトランザクション識別子の文字列表現
  • event_countEND イベント用)- トランザクションによって出力されたイベントの合計数
  • data_collectionsEND イベント用)- 指定のデータコレクションからの変更によって出力されたイベントの数を提供する data _collection と event_count のペアの配列。

{
  "status": "BEGIN",
  "id": "00000025:00000d08:0025",
  "event_count": null,
  "data_collections": null
}

{
  "status": "END",
  "id": "00000025:00000d08:0025",
  "event_count": 2,
  "data_collections": [
    {
      "data_collection": "testDB.dbo.tablea",
      "event_count": 1
    },
    {
      "data_collection": "testDB.dbo.tableb",
      "event_count": 1
    }
  ]
}

コネクターはトランザクションイベントを database.server.name. transaction トピックに出力します。

データ変更イベントのエンリッチメント

トランザクションメタデータを有効にすると、コネクターは変更イベント Envelope を新しい トランザクションフィールドで補完します。このフィールドは、複合フィールドの形式ですべてのイベントに関する情報を提供します。

  • id: 一意のトランザクション識別子の文字列表現
  • total_order: トランザクションによって生成されたすべてのイベントを対象とするイベントの絶対位置。
  • data_collection_order - トランザクションによって出力されたすべてのイベントを対象とするイベントのデータコレクションごとの位置。

以下は、メッセージの例になります。

{
  "before": null,
  "after": {
    "pk": "2",
    "aa": "1"
  },
  "source": {
...
  },
  "op": "c",
  "ts_ms": "1580390884335",
  "transaction": {
    "id": "00000025:00000d08:0025",
    "total_order": "1",
    "data_collection_order": "1"
  }
}