【しーでぃーしー(チェンジデータキャプチャ)】

CDC(Change Data Capture) とは?

最終更新:
💡 データベースの変わった部分を取り出して伝える

データベースの追加・更新・削除などの変更を検出し、変更したデータを他のシステムへ連携する手法。ログを読む方式などがあり、反映の遅延や扱える変更は方式・設定によって異なる。

📌 このページのポイント
変更ログを使うCDCの構成例 DB 追加・更新・削除 変更ログ CDC 変更イベントへ Kafka 配信基盤の例 連携先A 連携先B 初回は既存データの 取得も検討する 反映の遅延・復旧時の重複も考える
ログ方式とKafkaを使う例。CDCには別の取得・配信方式もある。
ひよこ ひよこ
CDCは、データベースの何を伝えるの?
ペンギン先生 ペンギン先生
行の追加・更新・削除などを検出して、その変更を他のシステムへ伝えるよ。たとえば注文データの変更を分析用データベースへ反映する、といった使い方があるんだ。
ひよこ ひよこ
毎回すべての行をコピーするの?
ペンギン先生 ペンギン先生
変更分を連携するのが基本だよ。ただし連携先を最初に作るときは、既存データのスナップショットが必要になる場合がある。DebeziumのPostgreSQLコネクターでは、初回の取得から継続的な変更の取得へ移る構成を使えるんだ。
ひよこ ひよこ
どうやって変更を見つけるの?
ペンギン先生 ペンギン先生
データベースの変更ログを読む方式があるよ。ほかに更新時刻を使う方式やトリガー方式もある。削除や変更前の値まで取れるか、元のデータベースへどれくらい負荷がかかるかは方式や設定によるんだ。
ひよこ ひよこ
Kafkaがないと使えない?
ペンギン先生 ペンギン先生
必須ではないよ。Debeziumには、変更をKafkaのトピックへ送る構成がある一方、別の配信基盤へ送るDebezium Serverや、Javaアプリに組み込むEngineもある。CDCは特定の配信製品の名前ではないんだ。
ひよこ ひよこ
変更は、遅れずに1回だけ届くの?
ペンギン先生 ペンギン先生
反映には遅延があり、運用条件を確認する必要があるよ。DebeziumのPostgreSQLコネクターでは、障害からの復旧時に変更イベントが重複する場合もある。受信側で重複を扱い、停止中に必要なログが失われないよう保持や監視も考えるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CDC」って出てきたら「データベースの変更を取り出して他へ伝える仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Change Data Capture」 = 変更データの捕捉
💬 Changeは変更、Dataはデータ、Captureは捕らえること。変更を検出して取り出す仕組みを指すよ。全システムで遅延ゼロや欠落ゼロを保証する名前ではないんだ。

参考資料

← 用語集にもどる