2011年5月25日水曜日

第6回:ディメンショナルモデリング:階層とスノーフレーク

 前回は、ディメンショナルモデリングの基本スタースキーマについて解説しました。今回はもう少し踏み込んで解説したいと思います。

階層とドリルダウン

 データウェアハウスなどの分析データベースは、業務データベースと違い、個々の明細データに注目せず、月別や顧客別など、ある程度まとまったグループ単位のデータに注目します。その際、重要となるのが、階層という概念です。

 売上データ分析を例に説明したいと思います。たとえば、ある企業の経営者が最近5年の売上について分析したいとします。まず、経営者は全体の状況を把握するために年別で各年の売上状況を確認します。この場合、データは年別の売上高で分析されます。そして、ある年だけ極端に売上高が下がっていることに気付いたとします。その場合、経営者はどのような行動をとるでしょうか。

 おそらく、その原因を探ろうと、あれこれ分析軸を変えて分析するはずです。今回は、売上高が低い年をさらに詳細に月別で分析するケースを見ていましょう。経営者はでは、その年のどの月が売上が低いのかという疑問をもとに月別の売上データをみます。

 そして、さらに月別の売上データで気になる月あれば、さらに日別の売上高というかたちで、どんどん的を絞って詳細にデータを見ていきます。このようにどんどん詳細化して分析していくことを、ドリルダウンと呼びます。ドリルダウンとは逆に、上にあがっていくことをドリルアップと呼びます。

 例では、日付情報を年>月>日とみていきましたが、他のディメンション例では、製品情報の大カテゴリ>中カテゴリ>小カテゴリなどがあると思います。ここで使われているのが階層という概念です。そのため、設計の際は、どのような階層で分析したいかどうかについても把握する必要があるのです。

階層は非正規化で保持

 通常の業務システムでは、各階層を別のテーブルにして、1対多でリンクするのが一般的だと思いますが、ディメンショナルデータベースでは1つのテーブルに非正規化した形で保持します。これは、おもな理由としてパフォーマンスを向上するためと、ユーザにも分かりやすいようにスタースキーマをシンプルにするためです。業務データベースでは、更新の際の整合性を保つために正規化しますが、分析データベースは更新が少ないため、非正規化によるメリットがデメリットを上回る形になります。

スノーフレーク

 もしディメンションを非正規化せずに、正規化で構築した場合はスノーフレークと呼ばれます。スタースキーマが雪の結晶のように見えるためこのように呼ばれています。

 ディメンショナルモデリングでは、ブリッチテーブルなどの特殊な場合を除き、あまり望ましくない設計とされています。
業務データベースを経験している人は、つい正規化してしまいがちですが、性能とシンプルさという観点からなるべくスノーフレークは避けたほうがよいでしょう。

 今回は、階層とスノーフレークについて説明しました。次回はディメンショナルモデリングで重要なスローリーチェンジングディメンションについて解説します。

0 件のコメント:

コメントを投稿