データベースの変更を見逃さない
CDC(Change Data Capture)とDebeziumが実現するリアルタイム連携

2026.05.01

カテゴリー: データ連携
  • linkedinでシェア
  • Xでシェア
  • facebookでシェア
  • LINEでシェア
  • はてなブックマークでシェア

1. はじめに:ご挨拶

皆様、こんにちは。

「NebulaShift di」においてKafka技術を担当しております、上村です。
前回の記事ではApache Kafkaの概要とユースケースをご紹介しました。今回はKafkaのエコシステムの中でも特に注目されている技術である「CDC(Change Data Capture)」、そしてその代表的な実装である「Debezium」をテーマに解説します。

Debezium自体はKafka本体の機能ではありませんが、Kafkaと組み合わせることで、リアルタイムデータパイプラインの入り口を担う重要なコンポーネントになります。また、私たちが推進しているRed Hat Application Foundationsにおいても、Kafkaと並んで重要な役割を担う技術です。
「データベースの変更をリアルタイムにイベントとして取り出し、必要なシステムへ即座に連携する」――この仕組みがなぜ強力なのか、本記事ではCDCの基本概念から、Kafkaと組み合わせたアーキテクチャ、そして当社NebulaShift diで進めている検証内容までご紹介します。

2. バッチ連携の限界 ― なぜ"変更の即時検知"が求められるのか?

多くの企業システムでは、データベースの変更を他システムへ連携する際に以下のような方法が採用されています。

従来のバッチ連携

  • 定期バッチ(日次・時間次)でデータを抽出し、差分を突合して連携先に投入
  • 更新日時カラムやフラグカラムで変更行を検出するポーリング方式
  • DBトリガーやストアドプロシージャで変更を検知する方式

これらの方法は長年利用されてきましたが、リアルタイムデータ活用の観点ではいくつかの課題があります。まず「タイムラグ」の問題です。バッチ処理の場合、バッチ間隔分の遅延が必ず発生します。データ分析や意思決定において「今起きた出来事」を扱えないという制約が生まれます。

次に「データベースへの負荷」です。ポーリングやトリガーは、業務トランザクションとは別の処理をDBに追加することになり、システム規模が大きくなるほどパフォーマンスへの影響が無視できなくなります。
また、「DELETEの検知の難しさ」もよくある課題です。ポーリング方式では削除された行を検知できないため、論理削除フラグを設けるなどアプリケーション側の設計に影響が出ます。
更に、「スキーマ変更への追従性」も問題になります。テーブル構造が変更されるたびにETLや連携ロジックの改修が必要になり、運用コストが増加します。

こうした課題を根本的に解決するアプローチがCDC(Change Data Capture)です。

3. CDC(Change Data Capture)とは

CDC(Change Data Capture)とは、データベースに対して行われた変更(INSERT / UPDATE / DELETE)をリアルタイムに検知・取得する技術の総称です。

CDCの最大の特徴は、アプリケーションテーブルではなく、データベースのトランザクションログを直接読み取る点にあります。

CDC連携

代表的なトランザクションログには以下があります。

  • MySQL:Binlog
  • PostgreSQL:WAL
  • Oracle:Redo Log
  • SQL Server:Transaction Log

トランザクションログはデータベースが整合性を維持するために必ず記録している内部ログであり、CDCツールはこのログを読み取ることでデータベースの変更を高精度に検知します。

このアプローチにより、次のようなメリットが得られます。

  • リアルタイム性:変更がコミットされた直後にイベントとして取得可能
  • 低負荷:アプリケーションテーブルへの追加クエリが不要で、DB負荷が小さい
  • 完全な変更追跡:INSERT / UPDATE / DELETEを漏れなく取得可能

変更前後の値取得:UPDATE時にbefore/afterデータを取得可能、つまりCDCは、「データベースに起きたことすべての変更を、起きた瞬間に捉える」ための仕組みと言えます。

4. Debeziumとは ― CDCを実現するオープンソースの本命

Debeziumは、CDCを実現するオープンソースプラットフォームで、Apache Kafka Connectのコネクタとして動作します。各種データベースのトランザクションログを読み取り、変更イベントをKafkaトピックにストリーミング配信します。

Debeziumの主な特徴は以下の通りです。

Debesiumアーキテクチャ:リアルタイムデータパイプライン

  • 幅広いDB対応:MySQL、PostgreSQL、SQL Server、Oracle、MongoDB、Db2など主要なデータベースに対応
  • Kafka Connectベース:Kafka Connectのフレームワーク上で動作するため、デプロイ・管理・スケーリングが容易
  • スナップショット機能:初回接続時に既存データを取得し、以降は差分のみを配信
  • スキーマ変更の追従: ALTER TABLEなどのDDL変更を検知し、イベントスキーマに反映
  • 高い信頼性:Kafkaのオフセット管理と組み合わせることで、高い配信保証を実現

DebeziumはもともとRed Hat社内で誕生したプロジェクトであり、現在はCommonhaus Foundationのプロジェクトとして運営されています。Red Hatは引き続き主要スポンサーとして関与しており、Red Hat build of Debeziumとして商用サポートも提供されています。

エンタープライズ環境において、OSSでありながら商用サポートが利用できる点は大きなメリットです。

5. Kafka × Debeziumが生み出すリアルタイムデータパイプライン

Kafkaのストリーミング基盤と、DebeziumのCDCを組み合わせることで、リアルタイムデータパイプラインを構築できます。

Debeziumによるデータベース変更のKafkaストリーミング配信

この組み合わせにより実現できることを整理します。

  • イベント駆動型連携:DB変更をトリガーにリアルタイム連携
  • データ配信の多重化:一つのイベントを、複数システムに同時配信
  • 既存システム非侵襲:既存アプリケーションやDBの改修は一切不要
  • 高い障害耐性:Kafkaのレプリケーションによるイベントを安全に保持

Kafkaが「データの高速道路」だとすれば、Debeziumは データベースという源流からイベントを取り出す入口 の役割を担います。

6. 代表的なユースケース

KafkaとDebeziumのユースケース

  • キャッシュ・検索インデックスの自動更新:RDBの変更に連動してRedisやElasticsearchを自動更新。アプリケーション側でのキャッシュ破棄ロジックが不要に
  • 監査ログ・コンプライアンス:すべてのデータ変更を変更前後の値とともにイベントとして記録。改ざん困難なKafkaの不変ログとして保持
  • レガシーシステムの段階的モダナイゼーション:既存のモノリシックなDBはそのまま、CDCで変更イベントを抽出し、新しいマイクロサービスやクラウドサービスに連携
  • マイクロサービス間のデータ同期:サービスごとに異なるDBを持つマイクロサービスアーキテクチャにおいて、CDCで変更を検知し、他サービスのデータストアをリアルタイムに同期
  • 異種DB間のリアルタイムレプリケーション:OracleからPostgreSQLへの移行期間中に、CDCで変更を同期し続けることでダウンタイムを最小化

中でも、私たちNebulaShift diが特に注目しているのが、Debezium × Kafka × Databricksの組み合わせによるリアルタイムデータ基盤の構築です。

7.【検証】Debezium × Kafka × Databricksによるリアルタイムデータ取り込み

NebulaShift diでは、基幹系データベースの変更をリアルタイムにデータレイクハウスへ取り込む構成として、以下のアーキテクチャの検証を進めています。

検証構成図

  • 変更検知(Debezium):基幹系DB(MySQL / PostgreSQL等)のトランザクションログをDebeziumが読み取り、INSERT / UPDATE / DELETEをイベントとして取得
  • イベント配信(Kafka):変更イベントをKafkaトピックに配信。Kafkaのスケーラビリティと耐障害性により、大量の変更イベントも安定して中継
  • リアルタイム取り込み(Databricks):DatabricksのStructured StreamingでKafkaトピックをサブスクライブし、Delta Lakeにリアルタイムで書き込み。Delta LakeのACID特性により、取り込みと分析の同時実行も安全に実現

この構成の特徴は基幹系DBに一切手を加えずにリアルタイム連携を実現できる点です。従来のETLでは日次バッチで取り込んでいたデータが、トランザクションコミット直後にレイクハウスへ反映されます。

これにより、

  • リアルタイムBI
  • 即時アラート検知
  • AI/MLモデルのリアルタイム更新

といったユースケースが実現可能になります。

NebulaShift diではこうしたDebezium × Kafka × Databricksの構成をリアルタイムデータ基盤の有力なアーキテクチャとして検証しています。

7. まとめ

いかがでしたでしょうか。

今回はCDC(Change Data Capture)の概念と、それを実現するDebeziumについてご紹介しました。

ポイントを整理すると、次の通りです。

  • CDCはデータベース変更をリアルタイムに取得する技術
  • DebeziumはKafka Connectベースの代表的CDCツール
  • Kafka × Debeziumにより、イベント駆動型データ連携が実現
  • DB改修なしでリアルタイムデータパイプライン構築が可能

前回お伝えしたKafkaの「止まらない、さばける、つなげる」でしたが、Debeziumが加わることで「見逃さない」データ連携基盤を実現できます。

データベースに起きたすべての変更を、起きた瞬間に捉え、必要なところへ届ける。この仕組みは、リアルタイムデータ活用の第一歩として非常に強力です。

「既存DBをそのまま活かしながら、リアルタイム連携を実現したい」という場面がありましたら、ぜひCDC × Kafkaの活用をご検討ください。

次回以降も、Kafkaエコシステムに関する技術トピックをお届けしてまいります。ぜひご覧いただけると嬉しいです。

NebulaShift di・メッセージング基盤導入サービス

プロフィール

SCSK株式会社ITインフラ・ソフトウェア事業本部データ・ミドルウェア部 上村 大貴
担当者名
上村 大貴
所属
SCSK株式会社
ITインフラ・ソフトウェア事業本部
データ・ミドルウェア部
コメント
データ連携に関する製品群(ASTERIA, HULFT Square,Kafka等)の技術を幅広く担当

記載されている製品/サービス名称、社名、ロゴマークなどは該当する各社の商標または登録商標です。

本ブログ記事は正確性を保証するものではなく、記事の内容によって生じた結果について、いかなる責任も負いません。

関連記事

PAGETOP