変更データキャプチャ (CDC) とは

URL をコピー

変更データキャプチャは、データにいつどのような変更が発生したかを追跡し、それらの変更に対応する必要がある他のシステムやサービスに警告するための実証済みのデータ統合パターンです。変更データキャプチャは、データに依存するすべてのシステム間で一貫性と機能を維持するのに役立ちます。

データはあらゆるビジネスの基本です。しかし、そのデータは常に更新や変更が行われており、それが課題となっています。そして、企業はこれらの変化に遅れずについていく必要があります。取引、注文、在庫、顧客など、いずれにおいても、最新のリアルタイムデータを保持することは、ビジネスを継続するために不可欠です。発注書が更新されたとき、新規顧客が登録されたとき、支払いを受領したときなどには、重要なビジネスプロセスを完了するために、企業のあらゆるアプリケーションに通知する必要があります。

ソースデータベース (多くの場合、Oracle、Microsoft SQL Server、Postgres、mysql などのリレーショナル・データベース) を更新する際には、キャッシュや検索インデックスなどの複数の関連リソースの更新が必要な場合があります。単純なアプローチで対処するのであれば、これらのリソースを同時に更新するためにアプリケーションをアップグレードする必要があります。しかし、この変更されたデータを複数のターゲットに一貫して書き込もうとすると、課題や調整に対して多くのオーバーヘッドが発生します。CDC を使用すると、二重書き込みなどの問題を回避できるだけでなく、リソースを同時かつ正確に更新できます。

CDC は、注入、更新、および削除イベントとして分類されたデータベースソーステーブルの行レベルの変更を追跡し、それらの変更通知を同じデータに依存する他のシステムやサービスで利用できるようにすることで、これを実現します。変更通知は、元のデータベースで行われたのと同じ順序で発行されます。このようにして、CDC は、特定のデータセットのすべての関係者に変更を正確に通知し、それに応じて、データの独自のバージョンを更新するか、ビジネスプロセスをトリガーすることで対応できるようにします。

先進的なマイクロサービス駆動型アーキテクチャでは、CDC は、従来のデータベースをクラウドネイティブなイベント駆動型アーキテクチャに接続するために不可欠なブリッジを提供することで、新たな重要性を獲得しています。CDC を使用すると、企業はレガシーデータベースを引き続き使用しながら、先進テクノロジーを通じてデータを利用できます。新規デプロイメントの場合、CDC は、マイクロサービスがデータベース・トランザクションから統合データをやり取りできるようにする「送信トレイ」のような便利なパターンとスキーマの使用を可能にします。

Red Hat のリソース

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 と Kafka を使用して、すべてのステークホルダーができるだけ早くデータを利用できるようにすることが重要です。正確でほぼリアルタイムの分析にアクセスできるようにすることは、競争上の優位性を構築および維持するために不可欠です。

遅滞なく業務を継続

複数のシステムのデータが同期されていない場合、それらのシステムには、注文の調整、取引の処理、顧客へのサービス提供、レポートの生成、生産スケジュールの把握などの問題が発生する可能性があります。このような状況がビジネスの遅延につながる場合があります。つまり、収益が失われるということです。CDC を使用すると、多数のシステム間で、低遅延でのデータ同期が可能になるため、業務を円滑に進めることができます。

データ管理についての詳細

Red Hat Integration は、Red Hat AMQ Streams と Apache Kafka を組み合わせ、Debezium を通じて変更データキャプチャ機能を提供します。Debezium は、さまざまなデータベースシステムからの変更のキャプチャをサポートする分散型オープンソースログベースの CDC プラットフォームです。Debezium は高速で耐久性があるため、アプリケーションはイベントを見逃すことなく迅速に応答できます。

ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

サービスメッシュとは?をわかりやすく解説

サービスメッシュ(service mesh)は、アプリケーションに組み込まれたインフラストラクチャ層で、マイクロサービス・アーキテクチャでのサービス間の通信を最適化します。

アプリケーション統合とは

アプリケーション統合は、データの交換とサービスの利用を通じた連携を可能にすることで、さまざまなシステムとアプリケーションを接続します。

REST API とは?をわかりやすく解説 | Red Hat

REST API は、REST (Representational State Transfer) の設計原則に従う API です。軽量、高速でスケーラビリティが向上するので、IoT やモバイルアプリ開発に最適です。

統合リソース