4.8 パーティションオプション、マテリアライズドビュー
4.8.2 マテリアライズドビュー
大規模な表に対して、分析業務でアクセスする際に問題になるのは、結合にかかるコストです。
そこで、Oracle8iより、元表はそのまま維持しておき、結合して集計処理などを行った結果をビューにもたせるオブジェクトが提供されるようになりました。
このビューはマテリアライズドビューと呼ばれ、通常のビューとは異なり、実際に元表からコピーした値をもってきます。
マテリアライズドビューが使用される適用業務
企業のデータベースは、データを格納するだけでなく、ビジネスで有効に活用されてこそ真価を発揮します。
リレーショナルデータベースは、定型文による問い合わせのみではなく、非定型な問い合わせにも柔軟に対応できるように設計されています。
非定型な問い合わせとは、たとえば、オンライン業務で蓄積された、売上データのような履歴データを、いろいろな観点から分析することによって売上傾向を把握し、今後の販売予測をたてるための問い合わせなどを指します。
このような問い合わせは、分析業務などで実行されるものですが、マテリアライズドビューは分析業務の問い合わせを効率よく行うために使用されます。
分析業務で実行するような問い合わせは、業務データそのものを直接使用しようとすると、複数の表を結合したり、時間軸の詳細なデータを加工したり、不要なデータを取り除くなどの処理を行わないと、自分に必要なデータを取得することができません。
マテリアライズドビューは、このような、必要なデータを加工して分析しやすくするための事前作業を行っています。
データウェアハウスでは、このようなデータの加工作業を次のように定義しています。
作業 | 内容 |
---|---|
抽出 | 業務システムから分析業務で必要なデータを抽出する 抽出するためには、必要なデータを選択するためのSQL文を使用できる |
クリーニング | 抽出した業務システムのデータ形式を変換したり、異常データの削除を行う データ形式の変換とは、文字コードの変換が主で、必要なすべてのデータの文字コードを揃える処理を行う 異常データの削除とは、たとえば、売上の返品処理などが行われた場合、業務システムでは、単純に削除処理を行うのではなく、キャンセルフラグなどを使って、相殺処理をするように設計されていることが多いので、それを検出するような処理が挙げられる キャンセルレコードを検出したら、元になっているデータとともに削除処理を行う このような業務システムで発生した特殊処理によって生成されたレコードを、きれいに揃えていく処理といえる |
変換 | 日付データ型を文字列型に変換したり、計算のためにNULL値を数値型の0に変換したり、表示のためにNULL値を空白に置き換えたりといった作業 |
業務システムで誤ったデータが混じっていた場合、それを抽出して正しい値に変換する エラーをあらかじめ推測して、アプリケーション的に処理ロジックを決めておく必要がある |
|
必要な表の結合処理を行う 売上データを管理している表は、正規化されているため、商品名や顧客名などの情報を取得するためには、それぞれのマスタ表を結合する必要がある 分析業務では、結合の元になるデータは履歴データである場合が多く、非常に大量のデータを保持している これをOracleではパーティション化表として格納している このようなデータのことをデータウェアハウスではファクト表と呼ぶ 一方、商品データや顧客データ、店舗データ、日時データなどは、分析の軸とするデータと定義づけられディメンション表と呼ぶ |
|
ファクト表の元データはDATEデータ型なので、時分秒の単位まで値をもっている しかし、分析時にはそこまで詳細な情報は不要であるため、日単位、週単位、月単位、クオータ単位に集計処理を行う |
表4-10 データ加工作業
マテリアライズドビューは、SQL文を発行することによって、上記のような処理を行います。
その結果として、日ごと、過ごと、月ごとの基本的な集計データをあらかじめ作成しておきます。
分析業務アプリケーションは、この集計データに対して、さらに詳細なSQLを実行し、必要なデータを加工して取得します。
その結果として、日ごと、過ごと、月ごとの基本的な集計データをあらかじめ作成しておきます。
分析業務アプリケーションは、この集計データに対して、さらに詳細なSQLを実行し、必要なデータを加工して取得します。
解説トレーナー