第4回:データウェアハウスアーキテクチャ(3):データボルトモデリング
今回は、第3のデータウェアハウスアーキテクチャ、「データボルトモデリング(Data vault modeling)」について説明します。前回と前々回で解説したインモンモデルやキンボールモデルほど有名ではありませんが、1つの考えとして重要なアーキテクチャなので紹介したいと思います。
データ統合せずにそのまま格納する
データボルトモデルの特徴を一言で言えば、すべてのオペレーションシステムから来たデータをそのまま保管するモデリングです。そのままデータを保管するところがポイントです。そのまま保管する理由はもし後で仕様が変わったとしても、元データがあるのでそれをもとに再構築できるからです。また、最近の監査に対応することを考えると、データを追えるという点で非常に優れています。
今までとりあえず、万が一のためにローデータをファイルで保管していた会社は多いと思いますが、いざとなったら使わないし、どういうデータ構造になっているかもわからないで有効に活用できていなかったのというのがほとんどの方の現状ではないでしょうか。
そこで、データボルトモデリングです。これを利用すれば、元データをリレーショナルデータベースに保管できるので、いざというときにすべてのデータを利用できます。確かにすべてのデータを保管するとデータ量が多くなりますが、近年ハードウェアは安くなっていますし、データの圧縮技術も進化しています。また、データ分散の技術も進化していますので、ある程度大きな会社であれば、これらの問題は解消できると思います。
モデリングの詳細
では、データボルトモデリングについて説明します。データボルトモデリングは次の3つのコンポーネントから成り立っています。それはずばり、ハブ(Hubs)、リンク(Links)、サテライト(Satellites)の3つです。
それでは1つずつ簡単に説明していきます。
ハブとはデータの大きな固まりを表したものです。例えば、顧客とか店舗などになります。
次にリンクです。リンクはハブとハブの関係を管理するテーブルです。データボルトモデリングは柔軟性を持たせるために普段はERで定義するリレーションをリンクテーブルで定義しています。これにより第3正規形ではテーブルの設計変更が発生する場合でもリンクのデータを変えることで柔軟に変更に対応できます。
最後にサテライト。これはデータの属性を保持するテーブルです。もちろん、ハブとリンクさせるのですが、1つのハブやリンクはサテライトを複数持つことができます。
例えば、既存システムで顧客情報をマーケティングシステムおよびセールスシステムのそれぞれで持っていれば、データボルトモデリングでは名寄せやクレンジングをせずにサテライトをそれぞれ1つずつ作って、顧客ハブの下にそれぞれ持たせることが可能です。これですべてのデータをそのまま保持できるのです。
まだ、詳しくは調べていませんが、この設計によりETLの処理もある程度並列で処理できるので高速で処理ができるようです。
ビックデータを保持する時代この技術は非常に有効だと思います。