スケーラブルデータベースサーバ HiRDB Version 8 解説(UNIX(R)用)

[目次][用語][索引][前へ][次へ]

3.3.9 表のマトリクス分割

表の二つの列を分割キーとして,分割方法の指定を組み合わせて分割することをマトリクス分割といいます。一つ目の分割キーとなる列を第1次元分割列,二つ目の分割キーとなる列を第2次元分割列といいます。マトリクス分割は,第1次元分割列で境界値指定のキーレンジ分割をし,分割されたデータをさらに第2次元分割列で分割します。第2次元分割列に指定できる分割方法を次に示します。

マトリクス分割によって分割された表をマトリクス分割表といいます。マトリクス分割表に対応させて,インデクスもマトリクス分割できます。なお,表をマトリクス分割するためには,HiRDB Advanced Partitioning Optionが必要です。

<この項の構成>
(1) 表のマトリクス分割の効果
(2) 適用基準
(3) 定義方法
(4) マトリクス分割の例

(1) 表のマトリクス分割の効果

複数の列を分割キーとして分割することで得られる効果を次に示します。

(2) 適用基準

次の場合,境界値指定のキーレンジ分割の組み合わせをお勧めします。

次の場合,境界値指定のキーレンジ分割とハッシュ分割の組み合わせをお勧めします。

(3) 定義方法

定義系SQLのCREATE TABLEPARTITIONED BY MULTIDIMオペランドで次の指定をします。

(4) マトリクス分割の例

(a) 境界値指定のキーレンジ分割の組み合わせの場合

顧客表の登録日及び店番号に境界値を指定し,登録日,店番号によって,それぞれの顧客データを次のようにユーザ用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))

〔説明〕
  1. 第1次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
  2. 第2次元分割列名(二つ目の分割キーとなる列名)と,その境界値リストを指定します。

マトリクス分割の例を次の図に示します。

図3-15 マトリクス分割の例(境界値指定のキーレンジ分割の組み合わせ)

[図データ]

(b) 境界値指定のキーレンジ分割とハッシュ分割の組み合わせの場合

第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))
 

〔説明〕
  1. 第1次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
  2. 第2次元列分割名(二つ目の分割キーとなる列名)と,ハッシュ関数名を指定します。

マトリクス分割の例を次の図に示します。

図3-16 マトリクス分割の例(境界値指定のキーレンジ分割とハッシュ分割の組み合わせ)

[図データ]