スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)
表の二つの列を分割キーとして,分割方法の指定を組み合わせて分割することをマトリクス分割といいます。一つ目の分割キーとなる列を第1次元分割列,二つ目の分割キーとなる列を第2次元分割列といいます。マトリクス分割は,第1次元分割列で境界値指定のキーレンジ分割をし,分割されたデータをさらに第2次元分割列で分割します。第2次元分割列に指定できる分割方法を次に示します。
マトリクス分割によって分割された表をマトリクス分割表といいます。
なお,表をマトリクス分割するためには,HiRDB Advanced Partitioning Optionが必要です。
複数の列を分割キーとして分割することで得られる効果を次に示します。
次の場合,境界値指定のキーレンジ分割の組み合わせをお勧めします。
次の場合,境界値指定のキーレンジ分割とハッシュ分割の組み合わせをお勧めします。
次の場合,境界値指定のキーレンジ分割とハッシュ分割の組み合わせで,ハッシュ分割に指定するRDエリア名を重複指定することをお勧めします。同じRDエリア名を重複指定することによって,分割数はそのままで,実際に使用するRDエリア数を減らすことができます。また,各RDエリアに格納するデータ量も均等にできます。RDエリア名を重複指定する場合については,「図12-4 ハッシュ分割で表格納用RDエリアを重複指定する例」を参照してください。
定義系SQLのCREATE TABLEのPARTITIONED BY MULTIDIMオペランドで次の指定をします。
定義時の規則を次に示します。
定義例は「(4)マトリクス分割の例」を参照してください。
顧客表の登録日及び店番号に境界値を指定し,登録日と店番号によって,表をマトリクス分割します。それぞれの顧客データを次のようにユーザ用RDエリア(USR01〜USR06)に格納します。格納するのに必要なユーザ用RDエリア数は,(境界値数+1)×(境界値数+1)なので,この例の場合,3×2=6です。
登録日 | 店番号 | |
---|---|---|
100以下 | 100より大きい | |
2000年以前 | USR01 | USR02 |
2001年 | USR03 | USR04 |
2002年以降 | USR05 | USR06 |
マトリクス分割する表を定義するSQL文を次に示します。
CREATE FIX TABLE 顧客表 (登録日 DATE, 店番号 INT, 顧客名 NCHAR(10)) PARTITIONED BY MULTIDIM( 登録日 (('2000-12-31'),('2001-12-31')), …1. 店番号 ((100)) …2. )IN ((USR01,USR02),(USR03,USR04),(USR05,USR06))
マトリクス分割の例を次の図に示します。
図12-15 マトリクス分割の例(境界値指定のキーレンジ分割の組み合わせ)
第2次元分割列でFIXハッシュ分割する場合の例について説明します。
顧客表の登録日に境界値を指定し,店番号と地域コードをハッシュ関数で三分割することによって,表をマトリクス分割します。それぞれの顧客データを次のようにユーザ用RDエリア(USR01〜USR09)に格納します。格納するのに必要なユーザ用RDエリア数は,(境界値数+1)×(ハッシュ関数で分割するユーザ任意の数)なので,この例の場合,3×3=9です。
登録日 | 店番号と地域コード(ハッシュ関数で三分割) | ||
---|---|---|---|
2002年以前 | USR01 | USR02 | USR03 |
2003年 | USR04 | USR05 | USR06 |
2004年以降 | USR07 | USR08 | USR09 |
マトリクス分割する表を定義するSQL文を次に示します。
CREATE FIX TABLE 顧客表 (登録日 DATE, 店番号 INT, 地域コード INT, 顧客名 NCHAR(10)) PARTITIONED BY MULTIDIM (登録日 (('2002-12-31'),('2003-12-31')), …1. FIX HASH HASH6 BY 店番号, 地域コード …2. )IN ((USR01,USR02,USR03), (USR04,USR05,USR06), (USR07,USR08,USR09))
マトリクス分割の例を次の図に示します。
図12-16 マトリクス分割の例(境界値指定のキーレンジ分割とハッシュ分割の組み合わせ)
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.