質問5:キューブは分析に必須ですか?
「キューブ」というのは、一言で言えば集約データです。大量の生データを要求の都度集計していたのではレスポンスが悪いので、事前にユーザが見たいデータを集約しておこうという発想であり、これはシステムを提供する側からすればごく自然な考え方です。
しかし、このキューブを作るのに非常に時間がかかるため、次のような質問が出てきます。「現在、夜間バッチでキューブを構築しているが、夜間バッチでは終わらず、24時間バッチになっている。こうなると、データの鮮度に問題があるし、何と言ってもユーザからの新たな要求に対応するのに長時間かかるため、ユーザから不満の声があがっている。そもそも、分析するためにキューブは必須なのか?」。
あるいは、「キューブはOLAPサーバ上に構築されている。そして検索ユーザは、このOLAPサーバに問合せを行うことになる。ということは、検索性能の良し悪しというのはOLAPサーバの性能次第ということになり、バックエンドのデータウェアハウス(DBエンジン)は、そんなに高性能なもの(S/WとH/W)は必要ないということなのか?」。
キューブの使用は、OLAPを行う一つの方法です。OLAPサーバ上にキューブを作成し、ユーザはOLAPサーバに検索要求を出すという形態を「MOLAP」と言います。これに対してリレーショナルデータベースを直接検索する形態を「ROLAP」と言い、この場合はキューブの構築は必須ではありません。さらに両者を併用できる製品があり、このような製品を使用した「HOLAP(ハイブリッドなOLAP)」という形態まであります。
このことを知っているお客様からは、「御社の製品を使用する場合、いずれの形態を選択することになるのか? あるいは、いずれの形態が最適なのか?」という質問が投げかけられます。
質問6:恒常的と言うけれど
さきほどは「時系列」についての議論でしたが、こんどは「恒常的」という特性に関する質問です。
「恒常的」というのは、不揮発性と説明されます。一旦データウェアハウスに入ったデータは決して更新されないということです。これにより、データが発生した時点の状態が永久に維持され、いつ過去を振り返ってもその時の状態を正しく参照できるということが保証されるのです。
この「恒常的」については、次のような質問があります。「業務系システムのテーブルは非正規化されており、一部のマスタデータがトランザクションデータに埋め込まれている。データウェアハウスのテーブルは業務系システムと同じテーブル定義になっており、変更差分をそのまま追加できるようになっている。ここで問題は、埋め込まれているマスタデータが変更された場合、業務系システムでは該当個所を一括して更新しているのだが、データウェアハウスではどのように対応すればよいのか?」。
データウェアハウスは恒常的といえども、このケースでは更新せざるを得ないと考えると、どの期間のデータを更新すればよいのでしょうか。業務系システムとデータウェアハウスではデータを保持している期間が異なります。データウェアハウスも全件更新だと結論すると、何億件ものデータを頻繁に更新するような運用になってしまいます。だからと言って、業務系システムで更新されたデータをデータウェアハウスに追加してしまったら、たとえば売上データであれば売上が倍増してしまいます。
これと似たような疑問でもっとやっかいなのが、マスタコードの変化にどのように対応するかという質問です。マスタコードはマスタテーブルの主キーですが、お客様のシステムによっては、これが変更されることがあるということです。たとえば商品マスタのマスタコード(商品ID)が、ある日を境にガラっと様変わりしてしまう。このケースでは、データウェアハウス上のすべてのトランザクションデータの商品IDを更新しなければ、実体が変化していない同じ商品なのに、その日を境に串刺しに集計することができなくなります。しかし更新してしまうと、マスタデータの過去の履歴は二度とトランザクションデータと結合して参照できなくなるというパラドックスに陥ります。