CDC とは
変更データキャプチャは、データにいつどのような変更が発生したかを追跡し、それらの変更に対応する必要がある他のシステムやサービスに警告するための実証済みのデータ統合パターンです。変更データキャプチャは、データに依存するすべてのシステム間で一貫性と機能を維持するのに役立ちます。
データはあらゆるビジネスの基本です。しかし、そのデータは常に更新や変更が行われており、それが課題となっています。そして、企業はこれらの変化に遅れずについていく必要があります。取引、注文、在庫、顧客など、いずれにおいても、最新のリアルタイムデータを保持することは、ビジネスを継続するために不可欠です。発注書が更新されたとき、新規顧客が登録されたとき、支払いを受領したときなどには、重要なビジネスプロセスを完了するために、企業のあらゆるアプリケーションに通知する必要があります。
CDC と Apache Kafka によるリアルタイムの変更
CDC はデータベースの変更をキャプチャしますが、それらの変更通知を該当するシステムやアプリケーションに配信するには、メッセージングサービスが必要です。これを実現する最も効率的な方法は、イベント駆動型アーキテクチャ (EDA) のように、変更をイベントとして扱い、非同期で送信することです。
Apache Kafka は、データベースと、大量の再生可能な消費パターンを必要とするデータコンシューマー間の非同期通信を実現するための理想的な手段です。Kafka は分散ストリーミング・プラットフォームで、イベントのストリームをリアルタイムで公開、サブスクライブ、保存、処理できます。複数のソースからのデータストリームを処理し、データを複数の宛先に配信するように設計されており、高いスループットとスケーラビリティを備えています。
変更データキャプチャにより、Kafka が送信するイベントが、元のソースシステムまたはデータベースの変更と一致することが保証されます。Kafka メッセージングは非同期であるため、イベントはコンシューマーから分離され、すべての変更をより信頼性の高い方法で配信できます。
変更データキャプチャを使用する理由
Debezium のような変更データキャプチャのプラットフォームは、変更がコミットされたときにトランザクションログを監視することで、データベースの変更を追跡します。このアプローチの別の選択肢としては、ポーリングやクエリに基づく単純なプロセスがあります。
そのようなオプションに対して、CDC はトランザクションログに基づいており、次のような利点を提供します。
- すべての変更がキャプチャされる:CDC は、データベースへの変更をすべてキャプチャするように設計されています。CDC を使用しない場合、ポーリングループの二度の実行の間に生じる変更や、更新、削除などの新しいデータが失われる可能性があります。
- 低オーバーヘッド:CDC と Kafka を組み合わせると、ほぼリアルタイムでデータ変更を配信できます。これにより、頻繁なポーリングによる CPU 負荷の増加を回避できます。
- データモデルへの影響がない: CDC を使用すると、最終データ更新を判別するためのタイムスタンプ列が不要になります。
ユースケース
変更データキャプチャのさまざまなユースケースの例を以下に示します。
マイクロサービスの統合
CDC を使用すると、マイクロサービスを従来のモノリシック・アプリケーションと同期し、レガシーシステムからマイクロサービスベースのアプリケーションにデータ変更をスムーズに転送できます。
データ複製
CDC は、複数のデータベース、データレイク、またはデータウェアハウスへのデータ複製に使用でき、各リソースが最新版のデータを保持できます。このようにして、CDC は、複数の分散した (さらにはサイロ化された) チームに同じ最新データへのアクセスを提供できます。
分析ダッシュボード
CDC を使用すると、ビジネスインテリジェンスなどの目的で、データ変更を分析ダッシュボードにフィードして、時間的制約のある意思決定に対応できます。
監査とコンプライアンス
厳格なデータコンプライアンス要件に従い、コンプライアンス違反に対する重い刑罰を回避するためには、データに加えられた変更の履歴を保存することが不可欠です。CDC を使用すると、監査要件やアーカイブ要件のデータ変更を保存できます。
キャッシュの無効化
CDC をキャッシュの無効化に使用して、最新版を表示するためにキャッシュ内の古いエントリーの置き換えや削除を行うことができます。
CQRS モデルの更新
CDC を使用して、Command Query Responsibility Separation (CQRS) の読み取りモデルをプライマリーモデルと同期させることができます。
全文検索
CDC を使用すると、全文検索インデックスをデータベースと自動的に同期させることができます。
CDC のビジネス上のメリット
変更データキャプチャは、企業がより迅速なデータ駆動型の意思決定を行い、無駄な時間や労力を削減して収益を増加させるのに役立ちます。
データの価値を最大化
CDC によって、企業は情報を複数の目的に活用できるようになり、データの価値を最大化することができます。CDC は、さまざまなサイロで同じデータを一貫して更新する手段であり、組織がデータの整合性を維持しながらデータを最大限に活用することを可能にします。
ビジネスを最新の状態に保つ
CDC を使用すると、複数のデータベースやアプリケーションを最新データと常に同期させることができるため、ビジネスのステークホルダーに最新の情報を提供できます。
より適切で迅速な意思決定
CDC により、ビジネスユーザーは、最新の情報に基づいて、より正確で迅速な意思決定を行うことができます。意思決定データは急速に価値を失うことが多いため、CDC と Kafka を使用して、すべてのステークホルダーができるだけ早くデータを利用できるようにすることが重要です。正確でほぼリアルタイムの分析にアクセスできるようにすることは、競争上の優位性を構築および維持するために不可欠です。
遅滞なく業務を継続
複数のシステムのデータが同期されていない場合、それらのシステムには、注文の調整、取引の処理、顧客へのサービス提供、レポートの生成、生産スケジュールの把握などの問題が発生する可能性があります。このような状況がビジネスの遅延につながる場合があります。つまり、収益が失われるということです。CDC を使用すると、多数のシステム間で、低遅延でのデータ同期が可能になるため、業務を円滑に進めることができます。
Red Hat の CDC:Debezium + Apache Kafka
Red Hat Integration は、Red Hat AMQ Streams と Apache Kafka を組み合わせ、Debezium を通じて変更データキャプチャ機能を提供します。Debezium は、さまざまなデータベースシステムからの変更のキャプチャをサポートする分散型オープンソースログベースの CDC プラットフォームです。Debezium は高速で耐久性があるため、アプリケーションはイベントを見逃すことなく迅速に応答できます。