• 検索結果がありません。

表のマトリクス分割

ドキュメント内 HiRDB Version 10 解説 (ページ 106-110)

前書き 2 変更内容 6

3.2  スキーマ

3.3.9  表のマトリクス分割

1. ハッシュ分割表を定義するときにハッシュ関数 A〜F を使用して,その表をリバランス表として定 義します。

2. 表の横分割数を増やすため,表格納 RD エリアを追加します。

3. リバランスユティリティを実行して表のリバランスを行います。

• 第 1 次元分割列による分割では,各境界値に該当するデータ量が膨大となる

• 第 1 次元分割列で分割された範囲のデータを,均等に細分化して格納したい

(3) 定義方法

定義系 SQL の

CREATE TABLE

PARTITIONED BY MULTIDIM

オペランドで次の指定をします。

• RD エリアへの表の割り当て

• マトリクス分割の方法(分割キー,分割方法)

(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. データベースの論理構造

図 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.

3. データベースの論理構造

)IN ((USR01,USR02,USR03), (USR04,USR05,USR06), (USR07,USR08,USR09))

〔説明〕

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

2. 第 2 次元列分割名(二つ目の分割キーとなる列名)と,ハッシュ関数名を指定します。

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

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

3. データベースの論理構造

ドキュメント内 HiRDB Version 10 解説 (ページ 106-110)