2011年5月31日火曜日

第13回:ETLチェンジデータキャプチャ

 今回は、ETLの機能して重要なチェンジデータキャプチャ(Change Data Capture CDCと略されます)について、詳しく説明したいと思います。

チェンジデータキャプチャとは?

 復習もかねて、チェンジデータキャプチャとは何かについて説明したいと思います。データウェアハウスでは、業務システムなどの様々なソースシステムからデータを抽出し、クレンジングしてから、データベースに登録または更新を行います。その際、当然、新規追加されたデータまたは、更新、削除されたデータだけ反映したいですよね。では、どうやって、各ソースシステムからどのデータが変更されて、どのデータが変更されていないかを判断するのでしょうか。それを把握するのが、チェンジデータキャプチャという機能です。

 代表的なチェンジデータキャプチャのテクニックは大きく下記の4つの方法があります。
・Source Data-Based CDC
・Trigger-Based CDC
・Snapshot-Based CDC
・Log-Based CDC

 各チェンジデータキャプチャについてくわしく説明していきましょう。

Source Data-Based CDC

 Source Data-Based CDCは、ソースシステムの変更データをあらわす属性を利用します。利用する属性として代表的なものに下記の2つがあります。
・タイムスタンプ
 少なくとも更新日付が1つは必要になります。理想としては、新規登録日と更新日の2つあることが望ましいです。
・データベースシーケンス
 多くのデータベースが自動でのシーケンス番号付与機能を持っています。これを利用すれば、どれが新規に追加されたどうかがわかります。

 この方法を利用する場合、ETLがどのデータまでを利用したかどうかをデータウェアハウス側に保持する必要があります。通常は、ステージングエリアや専用のテーブルを作ってデータを保持しておきます。この方法は、とてもシンプルな方法でよく使われます。しかし、下記の点について考慮する方法があります。

・新規か追加の判断
新規追加日と更新日が両方ある場合に限り、新規と追加の判断が可能になります。
・削除レコード
物理的にデータが削除された場合は、どれが削除されたかがわからなくなります。論理的に削除され、削除日などのデータがある場合は、削除レコードを把握することができます。
・複数更新データの把握
前回のロードから今回のロードまでに複数回更新があった場合は、その中間の更新は把握できません。
・リアルタイム機能
タイムスタンプやシーケンスを利用したデータの判定はバッチ処理での利用となり、リアルタイムロードでは利用できません。

Trigger-Based CDC

 この方法は、挿入、更新、削除などのデータ操作が実施された場合に、データベーストリガーを起動させ、ソースシステムの変更テーブルに変更内容を記録し、ETLで抽出する際にそのテーブルを利用する方法です。データトリガーがソースシステムで利用できるケースは少ないので、あまり使用されません。

Snapshot-Based CDC

 この方法は、毎回すべてのデータをソースシステムから抽出し、データウェアハウスに登録されている最新バージョンのデータと比べて、変更レコードを把握する方法です。この方法ですと、物理削除されたデータも把握できます。また、ソースシステム側は対応が必要ありまんので、幅広く利用できるデータチェンジキャプチャテクニックとなります。ただ、毎回全件データを抽出するので、処理が重くなると多くのデータ容量が必要となります。

Log-Based CDC

 一般的なデータベースであれば、データ変更された情報がログに記録されます。この方法はそのログを利用する方法です。これを利用すれば、物理削除のデータも把握することができます。

 以上で一般的なチェンジデータキャプチャの説明は終わりとなりますが、最近のデータベースの多くが、このチェンジデータキャプチャの機能を標準搭載しはじめています。お使いのデータベースが対応している場合もあるので、事前に確認しましょう。

 今回は以上となります。次回からはOLAPについて説明をしたいと思います。

0 件のコメント:

コメントを投稿