Symfoware Parallel Server RDBユーザーズガイド データベース定義編 |
目次
索引
![]() ![]() |
第2章 データベースの作成 | > 2.7 格納構造の定義 |
表のDSIの定義は、CREATE DSI文を使用して行います。表のDSI定義は、表のDSO定義に従ってデータベーススペースの割付けを行います。また、データを圧縮して表に格納する場合は、表のDSIの定義時にデータ圧縮指定を指定します。データ圧縮指定をすることにより、データベースの容量を縮小して、データの入出力性能を向上することができます。
以下に表のDSI定義の例を示します。
例
表のDSI定義
表の分割運用を適用しない場合(データ構造:STRIPE)
CREATE DSI 在庫表DSI DSO 在庫表DSO
(1) (2)
ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 6000M
(3) (4)
(5)(1) DSI名
(2) DSO名
(3) データベーススペース指定
(4) 割付け量
(5) スペース割付け
備考.上記の例では、並列数は3になります。
表の分割運用を適用しない場合(データ構造:SEQUENTIAL)
CREATE DSI 在庫表DSI DSO 在庫表DSO
(1) (2)
ALLOCATE DATA ON DBSP_1 SIZE 280K
(3) (4)
(5)
(1) DSI名
(2) DSO名
(3) データベーススペース指定
(4) 割付け量
(5) スペース割付け
表の分割運用を適用しない場合(データ構造:RANDOM)
CREATE DSI 在庫表DSI DSO 在庫表DSO
(1) (2)
ALLOCATE PRIME ON DBSP_1 SIZE 200K,
(3) (4)
OVERFLOW ON DBSP_1 SIZE 80K
(3) (4)
(5)(1) DSI名
(2) DSO名
(3) データベーススペース指定
(4) 割付け量
(5) スペース割付け
表の分割運用を適用する場合(データ構造:STRIPE)
CREATE DSI 在庫表DSI DSO 在庫表DSO USING(70,90)
(1) (2) (3)
ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 6000M
(4) (5)
(6)(1) DSI名
(2) DSO名
(3) 分割キー値
(4)データベーススペース指定
(5) 割付け量
(6) スペース割付け
備考.上記の例では、並列数は3になります。
表の分割運用を適用する場合(データ構造:SEQUENTIAL)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90)
(1) (2) (3)
ALLOCATE DATA ON DBSP_2 SIZE 280K
(4) (5)
(6)(1) DSI名
(2) DSO名
(3) 分割キー値
(4) データベーススペース指定
(5) 割付け量
(6) スペース割付け
表の分割運用を適用する場合(データ構造:RANDOM)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90)
(1) (2) (3)
ALLOCATE PRIME ON DBSP_2 SIZE 200K,
(4) (5)
OVERFLOW ON DBSP_2 SIZE 80K
(6) (7)
(8)(1) DSI名
(2) DSO名
(3) 分割キー値
(4) データベーススペース指定
(5) 割付け量
(6) データベーススペース指定
(7) 割付け量
(8) スペース割付け
データ圧縮指定をした場合(データ構造:STRIPE)
CREATE DSI 在庫表DSI DSO 在庫表DSO COMPRESS
(1) (2) (3)
ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 6000M
(4) (5)
(6)(1) DSI名
(2) DSO名
(3) データ圧縮指定
(4) データベーススペース指定
(5) 割付け量
(6) スペース割付け
備考.上記の例は、表の分割運用を適用せず、かつ並列数が3の場合です。
DSI名は、18文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。なお、DSI名は、データベース内で一意です。
CREATE DSO文で指定した表のDSO名を指定します。
表の分割運用を行わない場合は、1つのDSO定義に対して1つのDSIだけを定義します。一方、表の分割運用を行う場合、分割キー値を指定した複数個のDSI定義が必要となります。表の分割運用を行う場合のDSI定義では、存在するデータをすべて網羅するだけのDSI定義が必要です。
データを圧縮して表に格納する場合に、データ圧縮指定としてCOMPRESSを指定します。圧縮されるデータは、空白データ、ゼロデータおよびナル値データです。データ圧縮指定を指定した場合、データベーススペースの割付け量は、データ圧縮指定しないときよりも少ない量で済みます。必要な割付け量は、データがどの程度圧縮されるかによって決まります。データ圧縮の方法および割付け量については、“見積り式”を参照してください。
表の分割運用を行う場合に、分割条件の具体的な値を指定します。
分割キー値は、表のDSO定義の分割条件に指定した仮値リストの“?”に対する値を、定数で指定します。分割条件に複数の“?”が存在する場合には、その出現順序にあわせて、定数をコンマで区切り指定します。分割条件に指定した“?”の個数と、定数の個数は同じでなければなりません。
ある行(データ)の格納先が、複数のDSIとなるような分割キー値の指定はできません。
分割キー値に指定可能な定数の記述形式を表:分割キー値に指定可能な定数の記述形式に示します。
対応する列の属性 |
分割キー値に指定可能な定数の記述形式 |
---|---|
SMALLINT |
-32768〜32767(小数点なし) |
INTEGER |
-2147483648〜2147483647(小数点なし) |
NUMERIC(p,q) |
整数部(小数点の左側)の数字の数はp-q以下 |
DECIMAL(p,q) |
|
CHARACTER(n) |
文字数がn以下の文字列定数 |
NATIONAL CHARACTER(n) |
文字数がn以下の日本語文字列定数 |
DATE |
年から日までの10文字の日付 |
TIME |
時から秒までの8文字の時刻 |
TIMESTAMP |
年から秒までの19文字の時刻印 |
INTERVAL 開始日時フィールド |
各フィールドの指定により、年〜月、日〜時刻の時間隔を格納(詳細は“表:分割キー値に指定可能な時間隔型の記述形式”を参照) |
n : 文字数
p : 精度
q : 位取り
注) 定数が小数点を含まない場合はすべて整数部となります。
型種類 |
開始日時フィールド |
終了日時フィールド |
指定の意味 |
---|---|---|---|
年・月型 |
YEAR(p) |
− |
桁数pの年を表す時間隔 |
MONTH |
桁数pの年と月を表す時間隔 |
||
MONTH(p) |
− |
桁数pの月を表す時間隔 |
|
日・時型 |
DAY(p) |
SECOND |
桁数pの日と時間から秒を表す時間隔 |
MINUTE |
桁数pの日と時間から分を表す時間隔 |
||
HOUR |
桁数pの日と時間を表す時間隔 |
||
− |
桁数pの日を表す時間隔 |
||
HOUR(p) |
SECOND |
桁数pの時間と分から秒を表す時間隔 |
|
MINUTE |
桁数pの時間と分を表す時間隔 |
||
− |
桁数pの時間を表す時間隔 |
||
MINUTE(p) |
SECOND |
桁数pの分と秒を表す時間隔 |
|
− |
桁数pの分を表す時間隔 |
||
SECOND(p) |
− |
桁数pの秒を表す時間隔 |
p: 開始日時フィールドの精度(1〜9の整数を指定)
表のDSIに対して物理的なスペースの割付けを指定します。
データを物理的に格納するデータベーススペース名およびデータベーススペース中に、このDSI用に獲得する格納領域の大きさを指定します。獲得された格納領域は、DSO定義で指定されたページ長によりアクセスされます。
実際にデータを格納する、物理的なデータベーススペース名を指定します。
表のデータ構造がSTRIPE構造の場合は、並列にアクセスするデータベーススペース名を並びで指定します。データベーススペースの数が並列数になります。
割付け量には、データベーススペース中に獲得する格納領域の大きさを、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
表のデータ構造がSTRIPE構造の場合は、指定された割付け量を指定されたデータベーススペースの数で割った値を各データベーススペースに割り付けます。
表のDSIによるデータベーススペースへの格納の単位は、表のDSO定義での分割条件と、分割キー値の指定により決定されます。以下に使用例を示します。
例1
分割条件で指定した“?”の個数と分割値指定の定数の個数の関係
分割条件:WHERE (取引先)= (?) 分割値 :USING (61) (1) (2) 分割条件:WHERE (取引先)BETWEEN (?) AND (?) 分割値 :USING (61,71) (3) (4) 分割条件:WHERE (製品名,倉庫番号)= (?,?) 分割値 :USING (N'テレビ',2) (3) (4) 分割条件:WHERE (製品番号,在庫数量)BETWEEN (?,?) AND (?,?) 分割値 :USING (110,80,250,100) (5) (6) : : 定数の個数と分割条件に指定した“?”は同数である。
(1) 仮値 = 1
(2) 定数 = 1
(3) 仮値 = 2
(4) 定数 = 2
(5) 仮値 = 4
(6) 定数 = 4
在庫表を製品名と倉庫番号の値で分割格納し、テレビのDSIを作成します。
例2
在庫表に対するテレビのDSIを作成します。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE STRIPE(PAGESIZE(32), ORDER(1)) WHERE (製品名,倉庫番号) = (?,?) -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSIテレビ2 -- 倉庫番号2の在庫表 DSO 在庫表DSO のDSI USING (N'テレビ',2) -- 製品名テレビ、倉庫 ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 6000M -- 番号2の在庫表
発注表を取引先の地区別にデータ分割し、関西地区のDSIを作成します。発注表の発注先番号は地区別に割り振られており、70から79の範囲は、関西地区の会社を表しているものとします。
例3
発注表に対する関西地区のDSIを作成します。
CREATE DSO 発注表DSO -- 発注表のDSO FROM STOCKS.発注表 TYPE RANDOM ( PAGESIZE1(4), PAGESIZE2(4), CLUSTER (取引先, 取引製品)) WHERE (取引先) BETWEEN (?) AND (?) -- 取引先の番号別に -- データ分割配置 CREATE DSI 関西発注表DSI -- 関西に所在の会社用の DSO 発注表DSO -- 発注表のDSI USING (70,79) -- 70番台は関西所在の会社 ALLOCATE PRIME ON DBSP_2 SIZE 200K, OVERFLOW ON DBSP_2 SIZE 80K
在庫表を製品名と倉庫番号の値で分割格納し、テレビと冷蔵庫のDSIを作成します。なお、分割条件を製品名と倉庫番号とし、分割値の指定を複数指定するものとします。
例4
在庫表に対する製品名がテレビと冷蔵庫のDSIを作成します。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(1)) WHERE (製品名,倉庫番号) = (?,?) -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSI電化製品 -- 倉庫番号2と1の DSO 在庫表DSO -- 在庫表のDSI USING (N'テレビ',2),(N'冷蔵庫',1) -- 製品名テレビと冷蔵庫 ALLOCATE DATA ON DBSP_1 SIZE 280K -- の在庫表
売上表を年と月にデータ分割し、売上数量のDSIを作成します。なお、分割値の指定を複数指定するものとします。
例5
売上表に対する2000年度と2001年度の下半期の売上数量のDSIを作成します。
CREATE DSO 売上表DSO -- 売上表のDSO FROM STOCKS.売上表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(1)) WHERE (年度,月) BETWEEN (?,?) AND (?,?) -- 年度と月で -- データ分割 CREATE DSI 下半期DSI -- 2000年度と2001年度 DSO 売上表DSO -- の下半期のDSI USING (2000,10,2001,3),(2001,10,2002,3) -- 年度と月の売上表 ALLOCATE DATA ON DBSP_2 SIZE 280K
目次
索引
![]() ![]() |