データマートとキューブの違いって?
こんにちは、ギックス技術チームの岩谷です。
先日とある方より「データマートとキューブの違いって?」という質問をいただきました。この手の質問を時折耳にしますので、この場を借りて、ちょっと解説させてください。
まず、データマートは「データベース(DB)の目的・用途」です。一方、キューブは「データベースの形態」です。
車の話を例に挙げましょう。みなさんが車をご購入されるとき主にどういった目的で購入するでしょうか?買い物の荷物を積むため?通勤のため?かっこいい車でデートのため?これらが「目的・用途」です。次にどんな車を買いたいででしょうか?スポーツカー?ワンボックス?スクーター?これらが「形態」になります。
つまり、「通勤の為にスクーターを買う」という表現と同じように、「データマートの為にキューブ型データベースを導入する」という言い方になります。
データマートは「分析処理」の用途
データマートは、データ分析業務の中で「分析結果”画面”を高スピードに表示する」「分析結果”帳票”を高スピードに作成する」用途で使用されるDBです。
要素として重要なのは、
- 主に参照専用の為のDBである(更新頻度が低い)
- DBからのアウトプットを人が可視化Tool等で直接見る
- アウトプットの検索条件・集計条件をパラメータとして動的に制御したい
- 出力結果を高スピードで出力するために特化的な設計が盛り込まれている(DBとしての汎用性を捨ててでも)
上記4点です。結果として「ビッグデータ分析処理」としての用途が色濃くなるわけです。
キューブは保持するデータを内部で「小分けにして」格納するデータベースの形態
キューブの語源は立体パズルのルービックキューブと同じです。ルービックキューブは3×3×3で区分けされた立方体でそれぞれをぐるぐる回せますよね?利用者に対して、立方体として3つの面を見せつつも各面を構成する色を組み替えていく事が可能です。結果として各マスの部品は小分けされておりその気になれば各区画をバラバラに分解できる構成になっています。
なぜ一緒に語られることが多いのか?
これは、(非常にざっくり言うと)「キューブ型DB」が「データマートとしての用途」を満たすために考案されたDBの形態だから、です。この側面においては「データマート」と「キューブ型DB」は親子関係に近いといえます。上記用途のa~dを満たすためにキューブのような「各要素を小分けにして」「出力結果を生成するタイミングで動的に結合する」という形態のDBが必要とされたわけです。逆に言うとキューブ型DBを採用する場合、その用途はデータマートである事がほとんどですが、データマートの用途でDBを選定いたいと思ったときにキューブ型のDBが選定されるとは限りません。実際、弊社ギックスではデータマートの用途で、キューブ型以外のDB(Amazon RedShiftやPowerBI)を利用しています。(この理由および詳細については別記事でご紹介させていただきます)
おまけ:データウェアハウス(DWH)についてもちょっと
ちなみに、データマートの話題になると一緒に登場する単語としてデータウェアハウス(DWH)が挙げられます。これについてもちょっとだけ触れさせてください。DWHは分析用途としての「データ倉庫」となるデータベースです。用途という意味ではデータマートと同列の単語です。
DWHは、特徴として、
- データマートと同様、主に参照専用の為のDBである(更新頻度が低い)
- データマートはそのデータを人が可視化Tool等で直接見る事を用途とする事に対して、DWHは自身のデータが他のプログラムの入力源となる事も用途として考えられる
- 検索条件・集計条件のパラメータを動的に制御する用途はデータマートほど求められない
- 大量件数を扱うゆえに高スピードの検索速度を求められるが、分析者個々の分析要件を満たす特化的な設計は盛り込まれてはいない(DBとしての汎用性を重要視する)
結果として、「データマートはDWHのデータから上記b,c,dの要素を勘案してデータを加工した結果生成されるデータベース」という性格を色濃く持ちます。
【連載記事:いまさら訊けないビッグデータ分析】
- 文字コードや文字化けを理解しよう(その1)
- 文字コードや文字化けを理解しよう(その2)
- 「データマート」と「キューブ」の違いとは? (本編)
- カラムナー、キューブ、インメモリ…ビックデータ分析におけるデータベースのまとめ