Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
表のDSOの定義は、CREATE DSO文を使用して行います。
以下に表のDSO定義の例を示します。
例
表のDSO定義
- 表の分割運用を適用しない場合(データ構造:SEQUENTIAL)
CREATE DSO 在庫表DSO FROM STOCKS.在庫表 ↑ ↑ DSO名 表名 TYPE SEQUENTIAL(PAGESIZE(4),ORDER(0)) ↑ データ構造
- 表の分割運用を適用しない場合(データ構造:RANDOM)
CREATE DSO 在庫表DSO FROM STOCKS.在庫表 ↑ ↑ DSO名 表名 TYPE RANDOM(PAGESIZE1(4),PAGESIZE2(4),CLUSTER(製品番号)) ↑ データ構造
- 表の分割運用を適用する場合(データ構造:SEQUENTIAL)
CREATE DSO 発注表DSO FROM STOCKS.発注表 ↑ ↑ DSO名 表名 TYPE SEQUENTIAL(PAGESIZE(4),ORDER(0)) ↑ データ構造 WHERE (取引先)BETWEEN ( ? ) AND ( ? ) ← 分割条件 ↑ ↑ ↑ 列名リスト 仮値リスト 仮値リスト
- 表の分割運用を適用する場合(データ構造:RANDOM)
CREATE DSO 発注表DSO FROM STOCKS.発注表 ↑ ↑ DSO名 表名 TYPE RANDOM(PAGESIZE1(4),PAGESIZE2(4), CLUSTER(取引先)) ↑ データ構造 WHERE (取引先)BETWEEN ( ? ) AND ( ? ) ← 分割条件 ↑ ↑ ↑ 列名リスト 仮値リスト 仮値リスト
DSO名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。DSO名は、データベース内で一意です。
格納構造定義に対応する実表の名前を指定します。表名は、スキーマ名で修飾されている必要があります。
表のデータ格納時のデータ構造について指定します。DSO定義で表の格納構造を定義する場合には、SEQUENTIALまたはRANDOMが指定可能です。
SEQUENTIALを指定した場合、追加されるデータは追加順に格納されます。
PAGESIZEは、ページ長を指定します。ORDER(0)は、削除領域を再使用しないことを指定し、また、ORDER(1)は、削除領域を再使用することを指定します。詳細については、“SEQUENTIAL構造”を参照してください。
RANDOMを指定した場合、追加されるデータは無作為な順で格納されます。
RANDOMは、データの格納位置を決定するためのキーを、CLUSTERにより指定します。CLUSTERを省略すると、表定義における主キー(PRIMARY KEY)と同じ列の並びとなります。
PAGESIZE1、PAGESIZE2は、データ構造の要素(RANDOM構造の場合のPRIMEとOVERFLOW)のページ長を指定します。
RANDOM構造の場合は、RULEを指定してデータの格納位置を決定することができます。詳細については、“RANDOM構造”を参照してください。
表の分割運用を適用する場合に、分割の条件を指定します。実際の分割単位はDSI定義文で指定します。ここでは、分割のための条件だけを指定します。
各分割単位に格納される行は、列名リストに指定された各列に設定する値と、仮値リストの“?”にDSI定義文で指定された値を代入した結果により決定されます。
DSO定義文で分割条件を指定する場合、データ構造がRANDOMのときは、分割条件で指定する列名リストは、CLUSTERで指定した列名リストに含まれた列であることが必要です。
列名リストに指定可能な列の数は、最大で64個です。列名リストと仮値リストの“?”の数は、同じでなければなりません。
CLUSTERおよび列名リストに指定可能な列のデータ型は表:CLUSTERおよび列名リストに指定可能な列のデータ型のとおりです。
属性 |
精度 |
位取り |
長さ |
備 考 |
---|---|---|---|---|
SMALLINT |
− |
− |
− |
|
INTEGER |
− |
− |
− |
|
NUMERIC |
1〜18 |
0〜精度 |
− |
|
DECIMAL |
1〜18 |
0〜精度 |
− |
|
CHARACTER |
− |
− |
1〜1000(注1) |
VARYINGは指定不可 |
NATIONAL CHARACTER |
− |
− |
1〜500 (注2) |
VARYINGは指定不可 |
DATE |
− |
− |
− |
|
TIME |
− |
− |
− |
|
TIMESTAMP |
− |
− |
− |
|
INTERVAL |
− |
− |
− |
|
注1) 分割条件に指定する場合は、1〜254で指定します。
注2) 分割条件に指定する場合は、1〜127で指定します。
CLUSTERおよび列名リストに指定する列には、NOT NULLが指定されている必要があります。なお、分割条件で指定された列名リストを分割キーと呼びます。
以下に、発注表の取引先と取引製品を1組の分割キーとした発注表のDSO定義の例を示します。
例1
列名リスト中の列名の個数と仮値リストの“?”の個数の関係
分割条件:WHERE (取引先)= ( ? ) ↑ ↑ 列名 = 1 仮値 = 1 分割条件:WHERE (取引先)BETWEEN ( ? ) AND ( ? ) ↑ ↑ ↑ 列名 = 1 仮値 = 1 仮値 = 1 分割条件:WHERE (製品名,倉庫番号)= (?,?) ↑ ↑ 列名 = 2 仮値 = 2 分割条件:WHERE (年度,月)BETWEEN (?,?) AND (?,?) ↑ ↑ ↑ 列名 = 2 仮値 = 2 仮値 = 2 : 列名リスト中の列数と仮値の“?”の数は同数である。
例2
取引先名の名前で分割した例
CREATE DSO 発注表DSO2 FROM STOCKS.発注表 TYPE SEQUENTIAL(PAGESIZE(4)) WHERE (取引先) = (?)
例3
パーティション分割するキー値を、範囲で区切って分割する例
CREATE DSO 発注表DSO FROM STOCKS.発注表 TYPE SEQUENTIAL(PAGESIZE(4)) WHERE (取引先) BETWEEN (?) TO (?)
目次 索引 |