Symfoware Server RDB運用ガイド(データベース定義編) - FUJITSU -
目次 索引 前ページ次ページ

第4章 格納構造> 4.1 表の格納構造の特徴

4.1.2 RANDOM構造

RANDOM構造は、データに対して、そのキーとなる列の組の値から格納するページ(これをバケッと呼びます)を計算し、格納する構造になっています。ページにデータが収まらない場合は、Symfoware/RDBが自動的にオーバフローのページを切りだして、そのバケットに割り当て、データを格納します。元のバケットが属するページをオーバフロー部に対してプライムと呼びます。

データを格納するページを決める列の組をクラスタキと呼びます。クラスタキーは、表のDSO定義のCLUSTERオプションで指定されたキーです。CLUSTERオプションを省略した場合には、クラスタキーは対応する表定義の主キになります。RANDOM構造の場合、等しいクラスタキーの値をもつデータは、同一のバケットに格納します。

クラスタキーの値からバケットを決める計算に使用する関数を、ハッシュ関と呼びます。データを格納するバケットは、ハッシュ関数により、Symfoware/RDBが自動的に決定します。表のDSO定義文の格納オプションにRULEを指定している場合は、RULEに指定した値式を計算した結果により、データを格納するバケットを決定します。

在庫表を例にRANDOM構造の概略を以下に示します。

[図:RANDOM構造の概略]

■データ処理のパターンに対するRANDOM構造の特

データの処理の効率に一番影響のある要因は入出力回数です。RANDOM構造の場合は以下の特徴があります。

■RANDOM構造のページ長の指

RANDOM構造では、プライムのバケットを1つのページに対応させ、これとは独立に、オーバフローのバケットも1つのページに対応させます。それぞれのページは独立に指定できます。プライム部のページ長はDSO定義のPAGESIZE1オプションで、オーバフロー部のページ長はPAGESIZE2オプションで指定します。

ページ長を指定するときは、以下の考慮が必要です。

■RANDOM構造でインデックスの付加が必要な場

対応する表の一意性制約の列で、クラスタキーに指定されていないものについては、インデックスの付が必要になります。インデックスが付加されていない状態だと、表にアクセスすることはできません。

■RANDOM構造のデータ格納位置の指

表のDSO定義文の格納オプションにRULEを指定すことにより、データを格納するバケットを決定する規則を指定することができます。RULEを指定する場合には、以下の注意が必要です。

データを格納するバケットは、RULEに指定した値式を計算した結果をバケット数で割った余りの値により決定します。以下にデータの格納方法の概略を示します。

[図:データの格納方法の概略]

備考.値式の計算結果が負数になると、エラーとなります。

 

以下に、RULEを指定した場合の表のDSO定義例を示します。

クラスタキーが昇順に発生する場合で、格納効率を高め、かつ、データがオーバフロー部に格納されるのを防ぎます。製品情報表のレコード長を200バイトとします。プライム部のページ長(PAGESIZE1)と、1ページに4件のデータを格納することを考慮してRULEに指定する値式を設計します。
CREATE DSO  製品情報表DSO FROM A社.製品情報表
TYPE RANDOM ( PAGESIZE1(1), PAGESIZE2(1), CLUSTER(製品番号),
              RULE(製品番号/4)

備考.表のデータ件数を考慮した十分なバケット数が必要です。

 

バケット数は、表のDSI定義の割付け対象で指定したプライム部の割付け量とプライム部のページ長から求めることができます。バケット数は、次の式で求めます。(1を引くのは、Symfoware/RDBがページを管理するために1ページ分を使用するためです。)

                  プライム部の割付け量
バケット数  =    ---------------------     −  1
                  プライム部のページ長

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006