スケーラブルデータベースサーバ HiRDB Version 8 解説(Windows(R)用)
表の二つの列を分割キーとして,分割方法の指定を組み合わせて分割することをマトリクス分割といいます。一つ目の分割キーとなる列を第1次元分割列,二つ目の分割キーとなる列を第2次元分割列といいます。マトリクス分割は,第1次元分割列で境界値指定のキーレンジ分割をし,分割されたデータをさらに第2次元分割列で分割します。第2次元分割列に指定できる分割方法を次に示します。
マトリクス分割によって分割された表をマトリクス分割表といいます。マトリクス分割表に対応させて,インデクスもマトリクス分割できます。なお,表をマトリクス分割するためには,HiRDB Advanced Partitioning Optionが必要です。
複数の列を分割キーとして分割することで得られる効果を次に示します。
次の場合,境界値指定のキーレンジ分割の組み合わせをお勧めします。
次の場合,境界値指定のキーレンジ分割とハッシュ分割の組み合わせをお勧めします。
定義系SQLのCREATE TABLEのPARTITIONED BY MULTIDIMオペランドで次の指定をします。
顧客表の登録日及び店番号に境界値を指定し,登録日,店番号によって,それぞれの顧客データを次のようにユーザ用RDエリア(USR01〜USR06)に格納するように表をマトリクス分割します。格納するのに必要なユーザ用RDエリア数は,(境界値数+1)×(境界値数+1)なので,この例の場合,3×2=6です。
登録日 | 店番号 | |
---|---|---|
100以下 | 101以上 | |
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))
マトリクス分割の例を次の図に示します。
図3-15 マトリクス分割の例(境界値指定のキーレンジ分割の組み合わせ)
第2次元分割列でFIXハッシュ分割する場合の例について説明します。
顧客表の登録日に境界値を指定し,店番号と地域コードをハッシュ関数で3分割すると,それぞれの顧客データを次のようにユーザ用RDエリア(USR01〜USR09)に格納するように表をマトリクス分割します。格納するのに必要なユーザ用RDエリア数は,(境界値数+1)×(ハッシュ関数で分割するユーザ任意の数)なので,この例の場合,3×3=9です。
登録日 | 店番号と地域コード(ハッシュ関数で3分割) | ||
---|---|---|---|
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))
マトリクス分割の例を次の図に示します。
図3-16 マトリクス分割の例(境界値指定のキーレンジ分割とハッシュ分割の組み合わせ)
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.