Symfoware Parallel Server RDBユーザーズガイド データベース定義編 |
目次
索引
![]() ![]() |
第2章 データベースの作成 | > 2.7 格納構造の定義 |
表のDSOの定義は、CREATE DSO文を使用して行います。
以下に表のDSO定義の例を示します。
例
表のDSO定義
表の分割運用を適用しない場合(データ構造:STRIPE)
CREATE DSO 在庫表DSO FROM STOCKS.在庫表
(1) (2)
TYPE STRIPE(PAGESIZE(32),ORDER(1))
(3)
(1) DSO名
(2) 表名
(3) データ構造
表の分割運用を適用しない場合(データ構造:SEQUENTIAL)
CREATE DSO 在庫表DSO FROM STOCKS.在庫表 (1) (2) TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) (3)(1) DSO名
(2) 表名
(3) データ構造
表の分割運用を適用しない場合(データ構造:RANDOM)
CREATE DSO 在庫表DSO FROM STOCKS.在庫表
(1) (2)
TYPE RANDOM(PAGESIZE1(4),PAGESIZE2(4),CLUSTER(製品番号))
(3)
(1) DSO名
(2) 表名
(3) データ構造
表の分割運用を適用する場合(データ構造:STRIPE)
CREATE DSO 発注表DSO FROM STOCKS.発注表 (1) (2) TYPE STRIPE(PAGESIZE(32),ORDER(1)) (3) WHERE (取引先)BETWEEN (?) AND (?) (4) (5) (5) (6)(1) DSO名
(2) 表名
(3) データ構造
(4) 列名リスト
(5) 仮値リスト
(6) 分割条件
表の分割運用を適用する場合(データ構造:SEQUENTIAL)
CREATE DSO 発注表DSO FROM STOCKS.発注表 (1) (2) TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) (3) WHERE (取引先)BETWEEN (?) AND (?) (4) (5) (5) (6)(1) DSO名
(2) 表名
(3) データ構造
(4) 列名リスト
(5) 仮値リスト
(6) 分割条件
表の分割運用を適用する場合(データ構造:RANDOM)
CREATE DSO 発注表DSO FROM STOCKS.発注表 (1) (2) TYPE RANDOM(PAGESIZE1(4),PAGESIZE2(4), CLUSTER(取引先)) (3) WHERE (取引先)BETWEEN (?) AND (?) (4) (5) (5) (6)(1) DSO名
(2) 表名
(3) データ構造
(4) 列名リスト
(5) 仮値リスト
(6) 分割条件
DSO名は、18文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。DSO名は、データベース内で一意です。
格納構造定義に対応する実表の名前を指定します。表名は、スキーマ名で修飾されている必要があります。
表のデータ格納時のデータ構造について指定します。DSO定義で表の格納構造を定義する場合には、STRIPE、SEQUENTIALまたはRANDOMが指定可能です。
STRIPEを指定した場合、追加されるデータは複数のデータベーススペースに対してデータ量がほぼ均等になるように格納されます。
PAGESIZEは、ページ長を指定します。ORDERには、必ず1(削除領域を再使用する)を指定します。詳細については、“STRIPE構造”を参照してください。
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) (2) 分割条件:WHERE (取引先)BETWEEN (?) AND (?) (1) (2) (2) 分割条件:WHERE (製品名,倉庫番号)= (?,?) (3) (4) 分割条件:WHERE (製品番号,倉庫番号)BETWEEN (?,?) AND (?,?) (3) (4) (4) : : 列名リスト中の列数と仮値の“?”の数は同数である。(1) 列名 = 1
(2) 仮値 = 1
(3) 列名 = 2
(4) 仮値 = 2
例2
複数の列を分割キーとした表のDSO定義
CREATE DSO 発注表DSO2 FROM STOCKS.発注表 TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) WHERE (取引先,取引製品) = (?,?)
目次
索引
![]() ![]() |