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