CDC(変更データキャプチャ) しーでぃーしー
CDC変更データキャプチャリアルタイム同期Debeziumバイナリログストリーミング
CDCって何のためにあるの?バッチ処理と何が違うの?
簡単に言うとこんな感じ!
CDCは「DBに変更があったら即座にその変更だけを他のシステムに届ける」仕組みだよ!バッチが「夜中に全データをコピーする」のに対し、CDCは「更新があった分だけリアルタイムで同期する」から、常に最新データが他のシステムにも反映されるんだ。
CDC(変更データキャプチャ)とは
CDC(Change Data Capture:変更データキャプチャ) とは、データベースのINSERT・UPDATE・DELETE の変更を検出して、他のシステムにリアルタイムで伝播させるデータ統合技術です。
従来のバッチ処理(夜間に全データを一括同期)に代わり、CDCによりデータウェアハウス・検索エンジン・キャッシュへのリアルタイム同期が実現します。
CDCの仕組み
バイナリログ(BinLog)方式
最も一般的な実装。MySQLのbinlog・PostgreSQLのWAL(Write-Ahead Log)など、DBが内部で保持する更新ログを読み取って変更を検出します。
アプリケーション
↓ INSERT/UPDATE/DELETE
プライマリDB(MySQL/PostgreSQL)
↓ バイナリログ/WAL
CDC エンジン(Debezium等)
↓ メッセージストリーム(Kafka等)
各下流システム(DWH・Elasticsearch・Redis等)
主なCDCツール
| ツール | 開発元 | 特徴 |
|---|---|---|
| Debezium | Red Hat | オープンソース、Kafka統合 |
| AWS DMS | AWS | マネージドDB移行・CDC |
| Kafka Connect | Confluent | Kafkaエコシステムと統合 |
| Airbyte | Airbyte Inc. | ローコードのデータパイプライン |
歴史と背景
- 1990年代:大規模DWH構築でバッチ同期の限界が認識
- 2010年代:Apache KafkaとDebeziumの登場でCDCが実用的に
- 現在:マイクロサービスのイベント駆動アーキテクチャでCDCが標準パターンに