企業がデータに基づいたスマートな意思決定を続けるためには、最新の情報を得ることが重要です。しかし、大きな問題があります。それは、情報が古くなり、データ統合のワークフローを更新する必要が生じた場合、どのようにしてそれを把握することができるかということです。
多くの企業では、この問題に対処する代わりに、データ統合ジョブを一定の間隔で実行し、前回のジョブ以降に発生した変更を捕捉するバッチ処理に依存しています。しかし、データセットの変更がリアルタイムで通知され、変更されたデータだけを更新すればよいとしたらどうでしょう?
そこで登場するのが、Change Data Capture(CDC)です。では、Change Data Captureとは何でしょうか?CDCにはどのような種類があり、CDCとETLはどのように統合されるのでしょうか?今回のブログではこうした疑問について回答します。
Table of Contents
Change Data Captureとは?
変更データの取得は、ソーステーブルやソースデータベースに加えられた変更を、通常はリアルタイムで検出するプロセスと技術で構成されます。変更された行やエントリは、データレプリケーションを介してターゲットロケーション(AWS、Microsoft Azure、Oracle、Snowflakeなどのプロバイダのデータウェアハウスなど)に移動します。企業は、この更新されたデータをビジネスインテリジェンス(BI)やデータ分析のワークフローに利用することができます。
2つのCDCメソッド: ログベースCDC vs. トリガーベースCDC
Change Data Captureを実行するには、主にログベースのCDCとトリガーベースのCDCという2種類の方法があります。
ログベースCDCでは、CDCソリューションはデータベースのトランザクションログを参照します。このメタデータファイルは、データベースのクラッシュ時に簡単に回復できるように、データベースのすべての変更を記録します。しかし、この変更ログファイルを使うことでCDCを実現することもできます。このCDCソリューションは、ファイルを読み込んでソースシステムに加えられた変更を発見し、その変更をターゲットデータストアにデータレプリケーションします。
ログベースCDCの長所は以下の通りです。
- 信頼性が高い: データベースのトランザクションログは、データベースの障害回復を目的としているため、その情報は正確で信頼性が高い。
- 低レイテンシー(低遅延):トランザクションログはデータベース自体とは別のものであるため、リアルタイムでの変更を容易に把握することができます。
ログベースCDCの短所は以下の通りです。
- 独自のフォーマット:リレーショナルデータベースや非リレーショナルデータベース(Microsoft SQL Server、MySQL、PostgreSQLなど)は、それぞれ独自のログファイルフォーマットを持っている可能性があり、堅牢で汎用的なソリューションを構築するのを困難にしています。
- 高難度: 頻繁に変更されるデータベースの場合、非常に大きなトランザクションログを保持しており、それがCDCの実行を難しくします。
トリガーベースCDCでは、データベーストリガーを使用します。これは、何かしらのイベントが発生したとき(例えば、データがデータベースにロードされたとき)に実行される関数です。例えば、MySQLにはテーブル更新の前に自動的に起動するBEFORE UPDATEトリガがあります。 データベーストリガーは、CDCを行う際に変更点を抽出するためのオーバーヘッドを減少させますが、データベースが更新されるたびに実行する必要があるため、ソースシステムのオーバーヘッドを増加させます。
しかし、CDCには、ログベースのCDCかトリガーベースのCDCかというだけではありません。例えば、DATE_MODIFIEDやLAST_UPDATEDなどのデータベースのメタデータのタイムスタンプ列をスキャンして、最後にCDCを実行してからどの行が変更されたかを確認することができます。
このチェックを行うためにカスタムCDCスクリプトを書くこともできますが、データベースのスキーマが変更されると動作しなくなる可能性があり、脆弱性があります。また、この方法では削除された行を捕捉できない可能性もあります。
また、ターミナルコマンドのdiffを使って、データベースの現在と以前の状態を比較するという方法もあります。この方法では、削除された行を検出することができますが、データボリューム全体をスキャンするため、非常に多くのリソースを必要とします。
CDC と ETL
CDCの最も大きなメリットは、無駄な作業を大幅に省けることです。データベース全体を複製するのではなく、前回の更新以降に変更されたレコードのみを複製します。CDCの重要な使用例の1つにETLがあります。
ETLプロセスは、1つまたは複数のデータソース(ファイル、SQLおよびNoSQLデータベース、ウェブサイト、SaaSアプリケーションなど)から情報を抽出します。その後、必要に応じてデータのクレンジングと変換を行います。最後に、ETLプロセスはデータをターゲットのデータウェアハウスやデータレイクにロードします。
CDCは、ETLの際の時間と労力を大幅に削減することができます。また、リアルタイムETLを可能にすることで、常に最新のデータに基づいたインサイトにアクセスすることができます。
最後に
自社のデータを処理するのにCDCとETLソリューションが必要ですか?Integrate.ioがお手伝いします。 Integrate.ioは、ユーザーフレンドリーなETLおよびデータ統合プラットフォームです。シンプルなドラッグ&ドロップのインターフェイスと100以上のプリビルドコネクタを備えたこのプラットフォームは、あらゆる規模の組織が強力なETLパイプラインを構築するのに役立ちます。
Integrate.ioがもつETLと一緒に新しく追加されたCDC機能を使用すると、更新が必要なデータベースレコードを検出し、クラウドデータウェアハウスに移行することができます。Integrate.ioが市場で最も優れたETLおよびデータ統合ツールである理由について、もっと知りたい方はオンラインデモをお申し込みください。