Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
表のDSIの定義は、CREATE DSI文を使用して行います。表のDSI定義は、表のDSO定義に従ってデータベーススペースの割付けを行います。
以下に表のDSI定義の例を示します。
例
表のDSI定義
- 表の分割運用を適用しない場合(データ構造:SEQUENTIAL)
CREATE DSI 在庫表DSI DSO 在庫表DSO ↑ ↑ DSI名 DSO名 ALLOCATE DATA ON DBSP_1 SIZE 280K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
- 表の分割運用を適用しない場合(データ構造:RANDOM)
CREATE DSI 在庫表DSI DSO 在庫表DSO ↑ ↑ DSI名 DSO名 ALLOCATE PRIME ON DBSP_1 SIZE 200K, ←スペース割付け ↑ ↑ データベース 割付け量 スペース名 OVERFLOW ON DBSP_1 SIZE 80K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
- 表の分割運用を適用する場合(データ構造:SEQUENTIAL)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90) ↑ ↑ ↑ DSI名 DSO名 分割キー値 ALLOCATE DATA ON DBSP_2 SIZE 280K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
- 表の分割運用を適用する場合(データ構造:RANDOM)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90) ↑ ↑ ↑ DSI名 DSO名 分割キー値 ALLOCATE PRIME ON DBSP_2 SIZE 200K, ←スペース割付け ↑ ↑ データベース 割付け量 スペース名 OVERFLOW ON DBSP_2 SIZE 80K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
- 表のデータ構造がOBJECTの場合
CREATE DSI 製品写真DSI DSO 製品写真DSO ↑ ↑ DSI名 DSO名 ALLOCATE DATA ON DBSP_1 SIZE 100M ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
DSI名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。なお、DSI名は、データベース内で一意です。
CREATE DSO文で指定した表のDSO名を指定します。
表の分割運用を行わない場合は、1つのDSO定義に対して1つのDSIだけを定義します。一方、表の分割運用を行う場合、分割キー値を指定した複数個のDSI定義が必要となります。表の分割運用を行う場合のDSI定義では、存在するデータをすべて網羅するだけのDSI定義が必要です。
表の分割運用を行う場合に、分割条件の具体的な値を指定します。
分割キー値は、表のDSO定義の分割条件に指定した仮値リストの“?”に対する値を、定数で指定します。分割条件に複数の“?”が存在する場合には、その出現順序にあわせて、定数をコンマで区切り指定します。分割条件に指定した“?”の個数と、定数の個数は同じでなければなりません。
ある行(データ)の格納先が、複数のDSIとなるような分割キー値の指定はできません。
分割条件にBETWEENで複数の列を指定した場合、DSIで指定する分割値は複数列の値を連結して1の値として評価します。
例
分割条件が(年度,月) BETWEEN (?,?) AND (?,?)で、DSIの分割値に(2002,4,2003,3)を指定した場合、このDSIのデータ格納範囲は以下となります。例えば、(2002,12)は範囲内のデータとなります。
2002年4月〜2003年3月“年度”と“月”を連結して“年月”として評価します。
例えば、分割条件として(支店コード,製品番号) BETWEEN (?,?) AND (?,?)を指定しても、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 開始日時フィールド TO 終了日時フィールド |
各フィールドの指定により、年〜月、日〜時刻の時間隔を格納(詳細は“表:分割キー値に指定可能な時間隔型の記述形式”を参照) |
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定義で指定されたページ長によりアクセスされます。
実際にデータを格納する、物理的なデータベーススペース名を指定します。
スケーラブルログ運用を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。スケーラブルログ運用は、Symfoware Server Enterprise Extended EditionおよびSymfoware Server Enterprise Editionで使用できます。
割付け量には、データベーススペース中に獲得する格納領域の大きさを、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
表のDSIによるデータベーススペースへの格納の単位は、表のDSO定義での分割条件と、分割キー値の指定により決定されます。以下に使用例を示します。
例1
分割条件で指定した“?”の個数と分割値指定の定数の個数の関係
分割条件:WHERE (取引先)= (?) 分割値 :USING (61) ↑ ↑ 仮値 = 1 定数 = 1 分割条件:WHERE (取引先)BETWEEN (?) AND (?) 分割値 :USING (61,71) ↑ ↑ 仮値 = 2 定数 = 2 分割条件:WHERE (製品名,倉庫番号)= (?,?) 分割値 :USING (N'テレビ',2) ↑ ↑ 仮値 = 2 定数 = 2 分割条件:WHERE (年度,月)BETWEEN (?,?) AND (?,?) 分割値 :USING (2002,4,2003,3) ↑ ↑ 仮値 = 4 定数 = 4 :
備考.定数の個数と分割条件に指定した“?”は同数です。
例2
在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対するテレビのDSIを作成します。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE SEQUENTIAL(PAGESIZE(4), ORDER(1)) WHERE (製品名,倉庫番号) = (?,?) -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSIテレビ2 -- 倉庫番号2の在庫表のDSI DSO 在庫表DSO USING (N'テレビ',2) -- 製品名テレビ、倉庫番号2 ALLOCATE DATA ON DBSP_1 SIZE 280K -- の在庫表
例3
発注表を取引先の地区別にデータ分割し、発注表に対する関西地区のDSIを作成します。発注表の発注先番号は地区別に割り振られており、70から79の範囲は、関西地区の会社を表しているものとします。
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
例4
在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対する製品名がテレビと冷蔵庫のDSIを作成します。なお、分割条件を製品名と倉庫番号とし、分割値の指定を複数指定するものとします。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(0)) WHERE (製品名,倉庫番号) = (?,?) -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSI電化製品 -- 倉庫番号2と1の DSO 在庫表DSO -- 在庫表のDSI USING (N'テレビ',2),(N'冷蔵庫',1) -- 製品名テレビと冷蔵庫 ALLOCATE DATA ON DBSP_1 SIZE 280K -- の在庫表
例5
売上表を年と月にデータ分割し、売上表に対する2002年度と2003年度の下半期の売上数量のDSIを作成します。なお、分割値の指定を複数指定するものとします。
CREATE DSO 売上表DSO -- 売上表のDSO FROM STOCKS.売上表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(0)) WHERE (年度,月) BETWEEN (?,?) AND (?,?) -- 年度と月で -- データ分割 CREATE DSI 下半期DSI -- 2002年度と2003年度 DSO 売上表DSO -- の下半期のDSI USING (2002,10,2003,3),(2003,10,2004,3) -- 年度と月の売上表 ALLOCATE DATA ON DBSP_2 SIZE 280K
目次 索引 |