変更データキャプチャ(Change Data Capture、CDC)は、データベースに変更があった場合に他の連携するシステムやサービスに変更を知らせるための確立されたデータ連携方法です。変更データキャプチャはデータに関連するすべてのシステムに渡りデータの整合性と機能を保持させるために有効な手段です。
多くのデータベースシステムはCDC 機能を備えていますが、外部連携ではどうでしょうか? 多くのシステムを連携させるモダンなシステムアーキテクチャでは、CDC はデータベース外部へのデータ連携にも必要です。企業のデータ環境全体を見据えてCDC を設計することで、企業のデータ管理やデータドリブンな意思決定に役立てることができます。
複数のCDC の実装方法とその課題
Dataversity によると、CDC には以下の4つの方法があり、それぞれ異なる課題を持っています。
1. 変更日時
トランザクション系のアプリケーションでは、誰がデータを作成し、いつ作成/更新がなされたのかを含むメタデータは、それぞれのデータのレコード単位でキャプチャ可能です。CDC はデータが前回取得された時点から変更があったデータのトラッキングを行います。この方法には2つの課題があります。1つ目はレコードが削除された場合には、そのレコードに付随する情報が削除されてしまう点です。つまり、変更されたデータはすべてのテーブルで存在し続けなければならず、トランザクション系のアプリケーションの負荷やコストが増大します。2つ目は、変更があったデータのみを取得するには多くのリソースを使うため、アプリケーションのパフォーマンスに影響を与えてしまいます。
2. 差分比較
差分比較の方法は、前回同期時のデータと最新のデータを比較することで、差分を特定します。差分方式では、削除されたデータの特定が可能で、'変更日時' 方式の問題を解決してくれます。ただし、前回のデータと最新のデータの状態の全比較は膨大な計算リソースを必要とします。データ連携でもリアルタイム性の高いものには不向きといえるでしょう。
3. ログ
トランザクションデータベースでは、リカバリー目的ですべての変更がトランザクションログとして保存されます。ログを使ったCDC はこのトランザクションログを使って、データの変更に追従する方式です。問題としてはトランザクションログを解析してCDC に使用することが容易ではない点です。データがどのようにログとして記録され、保管されるかの標準というものはなく、データベースベンダーによってはログへのインターフェースが提供されていない場合もあります。ログへのインターフェースへのクエリやモニタリングのパフォーマンスや必要なリソースも問題となりえます。さらに、ほとんどのデータベースではログに内部固有の識別子が使われていますが、あくまでデータベースのリカバリ用であるため、CDC に必要な要件を満たしません。そのため、主キーカラムについてのログを保存する補助的な仕組みを取り入れています。
4. トリガー
データベーストリガーは、シャドウテーブルとしてテーブルデータや主キーの情報を保管して、データベースのレコードごとの変更を補足するものです。トリガー方式では、変更部分の外部からの取得の負荷は少ないものの、変更を記録することにリソースを使います。また注意点としては、ソースとなるアプリケーションデータがTRUNCATE された場合にはトリガーは変更を記録することができません。トリガーでは、テーブルスキーマへの変更があれば、それをトリガーしてシャドーテーブルが編集され、再作成され、リコンパイルされることとなり、CDC プロセスにリソース負荷がかかります。
変更データキャプチャ(CDC)のCData Sync での活用
CData Sync は、履歴データをシャドウテーブルとして保存し、データソーステーブルの変更を記録するCDC を実現しています。さらにCData のエンジニアリングサイドでは、トリガー方式のCDC の課題を解決するさまざまな仕組みを使っています。
第一に、CData Sync の変更データキャプチャ機能は主キーのみならず、履歴テーブルのデータレコードすべてを記録しており、CDC は主キーを含まないテーブルに対しても機能します。これによりユーザーはデータを管理しやすく、主キーの制約を超えて変更部分の管理が可能になります。
次に、CData Sync は履歴ビューをデータソースのテーブルからではなく、Sync 内の履歴ビューから取得します。Sync ツールが差分更新のために不要にデータソースのテーブルにアクセスする必要がないため、結果として、より少ないデータソーステーブルへの負荷でCDC を実現することが可能になっています。
CData Sync のCDC は、データソースやシステムにかかる負荷を最小化しつつ、データを絶えずアップデートした状態にすることを実現しています。
CData Sync の30日のトライアルをお試しください
ハイパフォーマンスな変更データキャプチャを実現するデータパイプラインツール、CData Sync の無償トライアルを是非お試しください。CData Sync は、オンプレミスへのインストール、AWS やAzure でのホスティングなどユーザーの好みの環境での利用が可能です。
30日の無償トライアルへ
関連コンテンツ