質問1:データウェアハウス?それともデータマート?
まず、「いま開発しているのは、データウェアハウスですか? それともデータマートですか?」という質問です。
私がデータウェアハウスの仕事をするようになった7、8年前は、開発メンバーやユーザにとって、開発しているものがデータウェアハウスであろうとデータマートであろうと、それは重要ではなく、単なる興味で聞かれていたように思います。つまり、「どちらでもよいのだけど仮に定義に照らした場合、どちらに分類されるのか? 後学のために教えて欲しい」という感じでした。
ところが最近は少し趣が変ってきまして、「セントラルウェアハウスを構築すべきなのか?」とか、「今まで、ユーザからの要求ごとにデータマートを構築してきが、このままのやり方でよいのか?」というように、データウェアハウス・システムの形態として「あるべき姿」を問われるようになりました。多くの企業がこれまでの経験を振り返り、将来のデータウェアハウス像を真剣に考え始めているということを実感しています。
ある大手メーカーの情報システム部門の方から伺った話を紹介します。
「現状、企業レベルのデータウェアハウス(セントラルウェアハウス)は存在せず、データマートが乱立している状況。ユーザからの分析要求は多くバックログ化(積み残し案件)しつつあるが、これまで同様に独立したデータマートを増やしてゆけばよいのか、あるいはセントラルウェアハウスを作った方がよいのか、進むべき道を検討するようCIOから指示されている。さらに方向性が明確になるまで新規システムの開発は凍結するとまで言われている。そこでいろいろ検討はしているのですが、どちらがよいのか迷っている」
実は、同じ悩みを持ってらっしゃる企業は意外と多いのです。
質問2:時系列にデータを蓄積するとは?
データウェアハウスの特性は、サブジェクト指向、統合化、時系列、恒常的、生データ(およびサマリデータ)の5つであり、この中の「時系列」に関する質問です。
「データウェアハウスは時系列にデータを蓄積すると言いますが、どうやって時系列にデータを持たせるのか?」と質問されます。
皆さんの中にも業務系システムでリレーショナルデータベースをご使用されている方は多いと思います。リレーショナルデータベースでテーブル設計をするとき、正規化という手法を用いますが、この正規化を行うとどんどんテーブルが分割されてゆき、売上データなどを入れるトランザクション系のテーブルと商品マスタや顧客マスタなどのデータを入れるマスタ系のテーブルが出来上がります。そしてこれらのテーブルは、キーとなる属性項目により関係が持たされるというデータ構造になります。
「時系列」を考える場合、トランザクション系のデータについては非常に理解しやすいと思います。1件の売上データが発生したら、それを抽出してデータウェアハウスに1件追加するということを繰り返せば、自然にデータは時系列に蓄積されることになるからです。
では、一方のマスタ系のデータはどうでしょうか。データウェアハウスには長期間のデータを保持しますから、その間にマスタ系のデータも変化します。この変更履歴をどうやって蓄積するのかというのが質問の趣旨です。この質問がなされる背景には、そもそもリレーショナルデータモデルではマスタデータの変更履歴を時系列に蓄積することが想定されてないという問題があります。開発者の方々は勿論それを知っているからこそ、「時系列」の意味に疑問を持たれているのです。
「時系列のデータ蓄積」に関する開発者の方々の意見はさまざまです。言下に「データウェアハウスの時系列とは、トランザクション系のデータだけを指している」と言われる方もいますし、「何とかマスタ系のデータの変更履歴を持たせる工夫はないものか」と考えられている方もいます。前者の主張をされる方でも、リレーショナルデータモデルの特性上やむを得ないと諦めている方もいますし、それは時制データベース(Temporal Database)で解決する、つまり異なる問題領域として捉えられている方もいます。
私は以前、データウェアハウスの構築を開始するにあたり、お客様から次のように言われたことがあります。「弊社は将来的にペーパーレス化の実現を目指している。現在、電子帳票システムを導入していますが、あらゆる時点におけるすべての帳票を電子媒体化することは事実上不可能。データウェアハウスを導入して生データを蓄積すれば、過去の任意の時点のさまざまな帳票を、出したいときに集計して出せるよね?」。
また、別のお客様から、「商品マスタやイベントマスタはどんどん変化します。これらのデータは商品企画、特売企画などの分析に必須。また過去の売上データを分析する際、その当時の組織マスタや店舗マスタなどが必要になる。したがって、マスタ系のデータは、その変更履歴を細大漏らさず蓄積して欲しい」。
私は、このような経験から、発生したデータはマスタ系も含めてありのままに蓄積した方がよい(場合によっては蓄積しなければならない)と考えていますので、「時系列」に関して質問が出るのは、非常に理解できます。「時系列」の対象がトランザクション系のデータだけならば、データウェアハウスの特性として敢えて「時系列」を挙げる必要はありません。過去の任意の断面を、あたかもその時点で業務系システムから出力されたがごとく出力できないようなデータウェアハウスならば、たとえば内部統制の要請であるトレーサビリティに対するソリューションとしても不十分かもしれません。