320 likes | 495 Views
Efficient Execution of Range-Aggregate Queries in Data Warehouse Environments. Seokjin Hong, Byoungho Song, Sukho Lee Proceedings of 20 th international Conference on CONCEPTUAL MODELING(ER 2001). システム情報科学府 知能システム学専攻 牧之内研究室 修士 2 年 笹栗 茂. 背景(1). データウェアハウス
E N D
Efficient Execution of Range-Aggregate Queries in Data Warehouse Environments Seokjin Hong, Byoungho Song, Sukho Lee Proceedings of 20th international Conference on CONCEPTUAL MODELING(ER 2001) システム情報科学府 知能システム学専攻 牧之内研究室 修士2年 笹栗 茂
背景(1) • データウェアハウス • 日々の業務から蓄積されたデータを抽出、変換し分析のために用いられるデータベースシステム • データ分析に対して効率的な構造 • 企業の意思決定支援
背景(2) • データウェアハウスでは、ユーザが分析のために行う検索を直感的に行えるような、わかりやすいスキーマ設計がなされる スタースキーマ • 中心に分析対象(ファクトテーブル)を置き、その周囲に分析軸(ディメンジョンテーブル)を放射状に配置する。その形からスタースキーマと命名
ファクトテーブル • スタースキーマの中央に位置し、分析対象となる大量のデータが保管されるテーブル。売上や在庫(メジャー属性)などが入る。分析条件となるデータを収めたディメンジョンテーブルとはキー項目(ディメンジョン属性)により結合される • ディメンジョンテーブル • 分析対象のファクトテーブルを取り囲むように位置し、時間・商品・店舗・顧客などの解析用の切り口を表現するテーブル
ディメンジョンテーブル(店舗) ディメンジョンテーブル(商品) 店舗コード 商品コード スタースキーマの例 地区コード 商品名 ファクトテーブル(明細データ) 店舗名 仕入先 店長名 商品コード 売単価 住所 原単価 店舗コード 商圏タイプコード 分類コード 面積 顧客コード 分類名 ディメンジョンテーブル(顧客) 時間キー ディメンジョンテーブル(時間) 顧客コード 時間キー 売上数量 顧客名 年 売上高 種別コード 月 顧客種別 日 ディメンジョン属性 電話番号 メジャー属性 時分秒 住所
分析データと集約演算 • データ分析においてデータのグループ化や集約演算が頻繁に行われる グループ化、集約演算の例: 各分類ごとに合計納品量をもとめる 商品コード 商品名 納品量 分類名 P1 C1 100 1 合計納品量 分類名 P2 C1 20 2 C1 170 P3 C1 50 3 C2 140 4 P4 C2 100 C3 70 P5 C2 40 5 P6 C3 30 6 7 P7 C3 40 同じ分類名を持つレコードでグループ化が行われ、各グループの納品量の和を計算
データウェアハウスでの検索の例 例.商品を分類別に今年の月別の 売上高がしりたい Select 分類名,月, Sum(売上高) From ファクトテーブル F, 商品 P,時間 T Where F.商品コード = P.商品コード AndF.時間キー=T.時間キー And T.年 = 今年(例 2002) Group by P.分類名 T.月 商品コード 店舗コード 商品名 地区コード 商品コード 仕入先 店舗名 売単価 店舗コード 店長名 原単価 住所 分類コード 顧客コード 分類名 顧客コード 時間キー 時間キー 顧客名 売上数量 種別コード 年 売上高 顧客種別 月 電話番号 日 時分秒 住所 条件にあてはまる分類名と月でグループ化し、同じ月と分類名を持つデータの売上高の和を計算 例の結果からある分類の商品が3月に売上が落ち込んでいることを発見 →店舗別での売上高がしりたい
ファクトテーブルのサイズはとても大きく、ファクトテーブルからその都度計算していては時間がかかるファクトテーブルのサイズはとても大きく、ファクトテーブルからその都度計算していては時間がかかる 問い合わせの結果をテーブルとして保持する マテリアライズドビュー Select 分類名,月, Sum(売上高) From ファクトテーブル F, 商品 P,時間 T Where F.商品コード = P.商品コード AndF.時間キー=T.時間キー And T.年 = 今年(例 2002) Group by P.分類名 T.月 商品/分類 左の検索を速く行えるようなテーブルを作成 店舗/地区 顧客 日/月/年 売上数量 売上高 ファクトテーブルの要約情報により検索を速く処理
スノーフレークスキーマ • スタースキーマのディメンジョンテーブルが多段階になったり、マテリアライズドビューを反映した構造 ディメンジョンテーブル(地区) 店舗コード 商品コード 地区コード 地区コード 商品名 商品コード 店舗名 地区名 仕入先 店長名 地区長名 売単価 店舗コード 住所 原単価 分類コード マテリアライズドビュー 顧客コード 分類名 商品/分類 顧客コード 時間キー 時間キー 顧客名 店舗/地区 売上数量 種別コード 年 売上高 顧客 顧客種別 月 電話番号 日/月/年 日 時分秒 住所 売上数量 スタースキーマ 売上高 スノーフレークスキーマ
背景(4) • マテリアライズドビューのサイズは大 検索を効率的に実行するためにインデックスを作成すると余分な負荷 Cubetree [Roussopoulos,et al.1997] • マテリアライズドビューを多次元インデックス (R-tree,etc)で構成することにより問題を解決
R‐tree [Guttman. 1984] • 空間に存在するオブジェクトをMBRで表現 • MBRはオブジェクトを包含する最小矩形でかつその各辺が空間の座標軸に平行な領域 • 範囲検索は、検索範囲と交差するMBRを選択しながら、根ノードから下位レベルへ辿る R2 R1 R2 g h R1 r3 r4 c r1 r2 r3 r4 r1 f d b r2 e a a b c d e f g h R-Treeの構造
R-treeにおける範囲検索の例 検索範囲を矩形で指定 検索結果=それに交差するオブジェクト 与えられた範囲と交差するノードを検索 R1 R2 R2 g h R1 r3 r1 r2 r3 r4 r4 c r1 f d b r2 e g h a b c d e f a 検索範囲 検索結果
Cubetree [Roussopoulos,et al.1997] • マテリアライズドビューを保持するための木構造 • N個のディメンジョン属性を持つファクトテーブルにおいて全ての可能なグループ上で集約関数を適用した結果をN次元空間にマップ • 多次元の範囲検索を効率的に処理
Cubetreeの例 リレーションR(A,B,C,Q) A,B,C: グループ化を行う属性 Q : メジャー属性 A,B, Cを軸とする空間に各タプルT(a,b,c,q)をa,b,cを座標値としqを点の内容してマップ C C (0,0,c,q) 点を全てのサブ空間へマップ (a,0,c,q) (0,b,c,q) (a,b,c,q) (a,b,c,q) (0,0,0,q) (a,0,0,q) (0,b,0,q) A B A B (a,b,0,q) すべてのレコードに対して行い、同じ位置にある点はその内容を集約
Cubetreeの例 リレーション R(A,B,Q) A,B:ディメンジョン属性 Q :メジャー属性 B 軸A,Bでのグループ化 b4 軸Aでのグループ化 b3 軸Bでのグループ化 b2 グループ化属性なし b1 各点はQに集約関数を適用した値を持つ 複数の集約関数を用いる場合、各集約値を持つ A 0 a1 a2 a3 a4 r1 r3 g r1 r2 r3 c b a b c d e f g f a d (0,0,q) (a1,0,qa1) (0,b1,qb1) e r2
Range-Aggregate query(RAQ) • データ分析において頻繁に行われる検索 • リレーション F(D1, D2, …, Dn,M)上でのRAQの例 • Select Aggregate_function(M) • From F • Where L1≦D1≦H1 • and L2≦D2≦H2and …. • andLk≦Dk≦Hk • 集約関数 : Sum(和), Count(要素数), Max(最大値), • Min(最小値), Avg(平均値) • 与えられた範囲を満足するレコードに集約関数を適用 • Cubetreeにおける範囲検索はR-treeと同様の手法により全ての • レコードをスキャンすることなく処理 • RAQの場合も同様の範囲検索を行い、検索結果である葉ノードの • レコードに対し集約関数を適用
Cubetreeの問題点 • RAQを処理するために検索範囲内の全ての中間ノード、葉ノードをアクセス • 検索範囲が大きな場合、応答時間悪化 r1 r3 r1 r2 r3 9 c g 7 8 2 5 6 a b c d e f g 1 3 4 f b a 1 2 3 4 5 6 7 8 9 d e r2 集約関数を適用
本論文の提案 Aggregate Cubetree • 各ノードのレコードに集約値を持つことによりRAQに対し、検索範囲内の全ての中間ノード、葉ノードをアクセスすることなく検索を実行
Aggregate Cubetreeの構造 • 基本構造はCubetreeと類似 • 中間ノードのレコードはMBR、子ノードへのポインタ、集約値をもつ • 葉ノードのレコードはディメンジョン属性、メジャー属性の集約値をもつ
Aggregate Cubetreeにおける集約値 • マテリアライズドビューを構成するために使われる集約関数によって決定 • 中間ノードの集約値は子ノードの全てのレコードの集約値に集約関数を適用した値 • マテリアライズドビューに対し複数の集約関数が使用される場合は各集約関数を適用した値をもつ • レコード挿入時における親ノードがもつ集約値の更新はMBRの更新時に行う
R1 r1 r5 r3 r4 r2 R2 r1 r2 r3 17 7 20 R1 r4 R2 r5 17 44 24 41 Aggregate Cubetreeの例(集約関数 Sum) 子ノードのレコードの集約値の和 ⑨ ⑥ ② ② ⑤ ⑦ ⑥ ⑤ ② ⑨ ① ③ ④ ⑥ ③ ⑨ ② ④ 集約値
RAQアルゴリズム • 検索はCubetreeと同様に行われる • 検索範囲にMBRが完全に含まれる場合、そのMBRがもつ集約値を使用 Cubetreeの場合 R1, R2, R3の子ノードにアクセス Aggregate Cubetreeの場合 R2,R3の子ノードにはアクセス R1は子ノードにアクセスせずR1 がもつ集約値を使用 R2 R1 検索範囲 R3
R1 r1 r5 r3 r4 r2 R2 r1 r2 r3 17 7 20 r4 r5 17 24 Aggregate Cubetree上でのRAQの例 • RAQ(集約関数Sum)の処理 • 検索範囲に交差するMBRの各レコードに対し再帰的に範囲検索を実行 • 検索範囲に完全に含まれるレコードに対しては各レコードの集約値を用いる R1 R2 44 41 検索範囲 ⑨ ⑥ ② ② ⑤ ⑦ ⑥ ⑤ ② ⑨ ① ③ ④ ⑥ ③ ⑨ ② ④ が持つ集約値の和が検索結果
実験 • CubetreeとAggregate cubetreeを比較 • 人工的に作成したデータを使用 • 次元数 2~5 • データ数 10,000、100,000、1000,000 • データ分布 一様分布、Zipf分布 • 測定項目 RAQを100回実行し、そのノードアクセス 数の平均 • 検索範囲サイズ • データ数 • 次元数 • データ分布
実験‐検索範囲サイズ • 検索範囲のサイズを変えて測定 各次元の定義域の大きさに対する割合が0.1~0.9 • データ数 1000,000
実験‐データ数 • データ数を変えて測定 データ数 10,000100,0001000,000 • 検索範囲サイズ 0.5
実験‐次元数 • 次元数を変えて測定 2~5 • データ数 1000,000 • 検索範囲サイズ 0.5
実験‐データ分布 • データ分布を変えて測定 一様分布 Zipf分布 • データ数 1000,000 • 検索範囲サイズ 0.5 小 大 データの偏り
実験考察(1) • 範囲検索サイズ • Aggregate cubetreeはサイズを大きくしてもノードアクセス数の増加は少ない • サイズが大きいほど性能差大 サイズが大きいほどMBRが検索範囲に完全に含まれる割合大 検索範囲内の全葉ノードをアクセスする必要がない • データ数 • データ数が多くなるほどノードアクセス数の割合小
実験考察(2) • 次元数 • 次元が多くなるほどノードアクセス数の割合大 データが散在しMBRのサイズが大きくなる →MBRが検索範囲に完全に含まれる割合減 • データ分布 • データの偏りが大きいほどAggregate cubetreeの効果小 いずれの場合もCubetreeに比べ少ないノードアクセス数 でRAQを実行
まとめ • Aggregate cubetreeというマテリアライズドビューを実現するための手法を提案 • 各ノードのレコードがその子ノードのレコードの集約値を持つことによりRAQを効率的に処理 • 実験により提案手法の有効性を確認 • オリジナルのCubetreeと比較し、常に少ないノードアクセス数で検索を実行