 |

|
Sybase IQで学ぶデータウェアハウス |
第3回:インデックスが9種類もある理由とは?
著者:サイベース 2007/7/12
|
|
|
前のページ 1 2 3 次のページ
|
 |
ジョイントキーに最適な「Low Fast(LF)」「High Group(HG)」
|
Sybase IQには、DWHで多用されるジョイン処理を高速に実行するためのインデックスとしてLow Fast、High Groupという2つのインデックスが用意されています。Low Fast、High GroupはそれぞれLF、HGという略称で呼ばれます。
Low Fastは一般的な「ビットマップインデックス」と考えてよいでしょう。B-treeのリーフ部分にデータ件数分のビットマップがぶら下がる構造になっています。
High Groupはサイベース独自の改良型B-tree型インデックスの形式を採用しています。High GroupはB-tree下にG-Arrayという構造体を保持し、この中には同じ値を持つローのIDが管理されています。
両者の使い分けは、カーディナリティで判断し、カーディナリティが、1500程度まではLow Fastを割り当て、それ以上の場合はHigh Groupを割り当てます。
Join以外にも、グルーピングや、count()、Min()、Max()などの集合関数、それから、範囲検索に使われるカラムに適用しても威力を発揮します。

図3:Low FastとHigh Group (画像をクリックすると別ウィンドウに拡大図を表示します)
|
範囲検索、集合関数が得意な「High Non Group(HNG)」
|
ジョインと同様にデータウェアハウスで多用されるのが、範囲指定検索と集合関数による演算です。このHighNonGroupというインデックスは、データを一旦2進数に変換した後、縦方向のビット列操作が可能なビットマップに変換、保存します。
これにより、計算処理を各ビット独立して同時実行したり、一部のビット桁を参照するだけで大小判定ができたりします。

図4:High Non Grou
SELECT文中で、集合関数を伴ったカラムやWHERE句で範囲指定のあるカラムに対して適用することにより効果を発揮します。また、圧縮率が比較的良く、生データの40〜50%程度に収まります。
|
2つのカラム間の大小関係をあらわす「Compare(CMP)」
|
1つのローの中にある2つのカラムの大小比較を高速に処理します。他のインデックスとは異なり、指定したカラムの比較結果をあらかじめ3桁のビット列で保存するものです。多数のローにわたり、売値カラムと買値カラムの大小関係の判定結果を高速に得たい、というような場合に適用します。
|
文字列検索用インデックス「Word(WD)」
|
CSV形式のように特定の区切り文字で区切られたデータを1つのカラムの中に格納し、各区切り単位に対して一括検索をかけることができるインデックスです。文字列検索を高速に処理するために使用されます。例えば、個人の趣味を表現する以下のようなテーブル「個人情報」があるとします。
名前 趣味
------ ----------------------
John Movie,Football,Baseball
Bob Tennis,Book,Movie
Charlie Cooking,Football
「趣味」という1つのカラムには各人の複数の趣味がCSV形式で格納されています。このテーブルに対して、趣味が「Movie」である者を抽出する以下のようなクエリを実行します。
SERECT 名前 FROM 個人情報 WHERE 趣味 CONTAINS‘Movie'
すると以下のような結果が得られます。
名前
------
John
Charlie
すなわち、Sybase IQのWordインデックスは、URL、ログのような構造を持った(特定文字で要素が区切られた)データをあたかも個別のカラムに格納したかのような検索をかけるという機能を提供します。
|
前のページ 1 2 3 次のページ
|
|

|
著者プロフィール
サイベース株式会社
1984年、カリフォルニア州バークレーで設立。情報の管理能力と、卓越したレベルでデータの信頼性とセキュリティを提供し、データセンターからアクションポイントまで、情報の管理と可動化のみに焦点を合わせた最大のグローバルエンタープライズソフトウェア企業として活動。サイベース株式会社は、米国 サイベース社 の日本法人として1991年に設立。
|
|
|
|