データウェアハウスで広く利用されている多次元データベースについて,次の事項を理解する。
データウェアハウス,OLAP,多次元データベース,スライシング,ダイシング,ドリリング,スター構造,スノーフレーク構造,MOLAP,ROLAP
データウェアハウスのように,エンドユーザーが直接にデータベースを検索加工して問題発見をしたり問題解決をする分析を主とする利用形態を,RDBの提唱者であるE.F.Coddは,OLAP(Online Analytical Processing)と命名し,その目的にはRDBよりも多次元データベース(MDDB:Multi-Dimensional Database)が適していることを示した。
「多次元」というと難しそうであるが,月別・商品別の売上データを,横に月,縦に商品をとれば2次元の表になる。月別・商品別・支店別の売上データは3次元になる(1)。さらに月別・商品別・支店別・で売上,原価,利益のような会計区分を加えれば4次元になるというように表の次元は増大する。このような表の形式にしたものを多次元データベースという。
多次元データベースの基本操作には,スライシング,ダイシング,ドリリングがある。
パンやハムをスライスするように,スライシングとは,多次元データベースをある断面で切り取って2次元の表にする操作である。上図では,大阪支店の部分でスライシングして(2)の表にしている。このとき,大阪と名古屋の2枚の断面を切り取り,その合計値を1枚の表にするようなこともできる。
ダイスとはサイコロのことで,ダイシングとはサイコロを振ることである。多次元データベースでの操作では,縦軸と横軸を指定して2次元の表にする操作を指す。たとえば(3)は,(1)を横から見た状態で,縦軸に商品,横軸に支店を指定したものであり,(4)は,上から見た状態,すなわち,縦軸に支店,横軸に月を指定したものである。
ドリリングとは,ドリルで深く掘り進むことである。多次元データベースでは,詳細に展開する操作をドリルダウンといい,逆に集計する操作をドリルアップという。(4)で東京支店を指定してドリルダウンを行うと,(5)のように東京支店の店舗別の表ができる。また,(5)を縦軸でドリルアップすると(4)のような集計表になる。
たとえば上図売上(月,商品,支店)すなわち,A(I,J,K)の配列としてとらえることもできるが,下のように正規化したテーブル群に分解することができる。また,正規化されたファイル群を多次元データベースに変換することもできる。
売上テーブル 店舗テーブル 支店テーブル 商品テーブル ────────── ───────── ────── ────── 店舗 月 商品 金額 店舗 店舗 支店 支店 支店名 商品 商品名 コード コード コード コード コード コード ────────── ───────── ────── ────── 11 4 1 40 11 銀座 1 1 東京 1 テレビ 11 4 2 28 12 新宿 1 2 大阪 2 パソコン 11 4 3 12 13 渋谷 1 3 名古屋 3 冷蔵庫 11 5 1 37 : : : ────── ────── 11 5 2 21 32 栄 3 : : : : ───────── 12 4 1 35 12 4 2 20 (ここでは,月は名称自体が数値なので, : : : : あえて年月テーブルを作らなかったが, 32 6 2 12 論理的にはそれが存在する。) 32 6 3 8 ────────── 多次元データベースのRDB的な表示
ここでの用語は,多次元データベースというよりも,更新をしないで検索加工を高速に行なうDBMSの代表的な商品であるRedBrickでの用語である。
これは下図のようにも表現できる。売上テーブルのようなイベントファイルをファクト(fact)テーブルといい,店舗テーブルや支店テーブルのようなマスタファイルをディメンション(dimension)テーブルという。一つのファクトテーブル(売上テーブル)に,3つのディメンションテーブル(商品テーブル,支店テーブル,年月テーブル)が結合しているが,これらの各ディメンションテーブルが一つの軸(縦軸や横軸)になるので,この多次元データベースは3次元になる。また,店舗テーブルは支店テーブルの詳細であり,ディメンションテーブルのディメンションテーブルであるともいえる。
┌──┐ ┌──┐ ┏━━┓ ┌──┐
│支店│ │店舗│ ┃売上┃ │商品│
│テー├─┤テー├─┨テー┠─┤テー│
│ブル│ │ブル│ ┃ブル┃ │ブル│
└──┘ └──┘ ┗┯━┛ └──┘
┌─┴─┐
│年月テ│
│ーブル│
└───┘
テーブル間の関係
この関係を一般化すると,下図(1)のように,一つのファクトテーブルと複数のディメンションテーブルが結合したスター(星)構造で表現される。この図では6次元になっている。さらに,上記の店舗テーブルのように,ディメンションテーブルが複数のディメンションデーブルを持つことがあり,(2)のようなスノーフレーク(雪片)構造になる。
多次元データベースのデータの持ち方には,MOLAP(MDDB-OLAP)とROLAP(RDB-OLAP)に区分できる。両者の特徴を示す。
MOLAP ROLAP
---------- ---------
内部構造 MDDB RDB
内容変更 しにくい しやすい
計算処理 登録時 実行時
登録時間 長時間 短時間
実行時間 高速 低速
多次元のデータをそのままの形で保存する。合計欄があるが,それもデータベースを作成するときに計算しておく。この方式には次の特徴がある。
多次元データベースは正規化されたファイル,すなわちRDBとして持つことができる。実際のデータはRDBの形式で持ち,インデクスを工夫することにより,利用者には多次元データベースとして見せるようにしたのがROLAPである。この特徴は,MOLAPの逆である。