CDC
DBなどのデータの変更を検知し、その変更をキャプチャし、他のシステムに反映させる手法
Claude Code.icon
DBに対する変更(INSERT / UPDATE / DELETE)を検知して、その変更イベントを別のシステムに伝える仕組み・手法の総称です。「データが変わったこと」を捉えて流すのがポイントです。
なぜ必要か
従来、あるDBのデータを別のシステム(データウェアハウス、検索エンジン、キャッシュ、別マイクロサービス)に同期させたいとき、こんな方法が使われてきました。
定期バッチで全件コピー → 重い・リアルタイム性がない
差分を updated_at でポーリング → DELETE を捕捉できない、取りこぼしが起きる、DBに負荷
CDC はこれらの問題を解決し、ニアリアルタイムかつ低負荷で、削除も含めた変更を確実に伝えられます。
主な実装方式
updated_at 等を定期的にポーリング
簡単だがDELETE検知不可・負荷高
DBのトランザクションログ(MySQLのbinlog、PostgreSQLのWAL等)を読む
最も主流
アプリ無改修・低負荷・取りこぼしが少ない
トリガーベース
DBトリガーで変更を別テーブルに記録
DBに依存せず実現できるが、書き込み負荷が増える
実務ではログベースが最良とされることが多いです。トランザクションログはDB自身が整合性のために必ず書いているものなので、それを「タダ乗り」して読むのが効率的だからです。