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

第2章 データベースの作成> 2.7 格納構造の定義

2.7.4 表のDSI定義

表のDSIの定義は、CREATE DSIを使用して行います。表のDSI定は、表のDSO定義に従ってデータベーススペースの割付けを行います。

以下に表のDSI定義の例を示します。

表のDSI定義

■DSI

DSI名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。なお、DSI名は、データベース内で一意です。

■DSO名

CREATE DSO文で指定した表のDSO名を指定します。

表の分割運用を行わない場合は、1つのDSO定義に対して1つのDSIだけを定義します。一方、表の分割運用を行う場合、分割キー値を指定した複数個のDSI定義が必要となります。表の分割運用を行う場合のDSI定義では、存在するデータをすべて網羅するだけのDSI定義が必要です。

■分割キー

表の分割運用を行う場合に、分割条件の具体的な値を指定します。

分割キー値は、表のDSO定義の分割条件に指定した仮値リストの“?”に対する値を、定数で指定します。分割条件に複数の“?”が存在する場合には、その出現順序にあわせて、定数をカンマで区切り指定します。分割条件に指定した“?”の個数と、定数の個数は同じでなければなりません。

ある行(データ)の格納先が、複数のDSIとなるような分割キー値の指定はできません。

分割条件にBETWEENで複数の列を指定した場合、DSIで指定する分割値は複数列の値を連結して1の値として評価します。

分割条件が(年, 月)BETWEEN(?,?)AND(?,?)で、DSIの分割値に(2006,4,2007,3)を指定した場合、このDSIのデータ格納範囲は以下となります。たとえば、(2006,12)は範囲内のデータとなります。
2006年4月2007年3月

“年”と“月”を連結して“年月”として評価します。

たとえば、分割条件として(支店コード, 製品番号)BETWEEN(?,?)AND(?,?)を指定しても、DSIのデータ格納範囲として“支店コードの範囲 かつ 製品番号の範囲”とはならないので注意してください。

例1

支店コード表を支店コードと製品番号の値で分割格納し、支店コード表に対する製品番号のDSIを作成します。
CREATE DSO  支店コード表DSO                   -- 支店コード表のDSO
       FROM STOCKS.支店コード表
       TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(0))
       WHERE (支店コード,製品番号) BETWEEN (?,?) AND (?,?);
                                                 -- 支店コードと製品
                                                 -- 番号でデータ分割

CREATE DSI  支店コードDSI製品番号1           -- 支店コード表のDSI
       DSO      支店コード表DSO
       USING   (100,1,199,10)                    -- (100,1)〜(199,10)
       ALLOCATE DATA ON DBSP_2  SIZE 280K;       -- の分割値

CREATE DSI  支店コードDSI製品番号2           -- 支店コード表のDSI
       DSO      支店コード表DSO
       USING   (200,10,299,20)                   -- (200,10)〜(299,20)
       ALLOCATE DATA ON DBSP_2  SIZE 280K;       -- の分割値

下線で記述したレコードもDSIの分割条件に含まれるので注意してください。

分割キー値に指定可能な定数の記述形式を以下に示します。

[表:分割キー値に指定可能な定数の記述形]

対応する列の属性

分割キー値に指定可能な定数の記述形式

SMALLINT

-32768〜32767(小数点なし)

INTEGER

-2147483648〜2147483647(小数点なし)

NUMERIC(p,q)

整数部(小数点の左側)の数字の数はp-q以下
小数部(小数点の右側)の数字の数は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およびSymfoware Server Standard 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  (2006,4,2007,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(1))
       WHERE (製品名,倉庫番号) = (?,?);     --  製品名と倉庫番号で
                                            --  データ分割

CREATE DSI  在庫表DSI電化製品            --  倉庫番号2と1の
       DSO      在庫表DSO                --  在庫表のDSI
       USING  (N'テレビ',2),(N'冷蔵庫',1)   --  製品名テレビと冷蔵庫
       ALLOCATE DATA ON DBSP_1  SIZE 280K;  --  の在庫表

例5

売上表を年と月にデータ分割し、売上表に対する2005年度と2006年度の下半期の売上数量のDSIを作成します。なお、分割値の指定を複数指定するものとします。
CREATE DSO  売上表DSO                          -- 売上表のDSO
       FROM STOCKS.売上表
       TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(1))
       WHERE (年度,月) BETWEEN (?,?) AND (?,?);   -- 年度と月で
                                                  -- データ分割

CREATE DSI  下半期DSI                          -- 2005年度と2006年度
       DSO      売上表DSO                      -- の下半期のDSI     
       USING   (2005,10,2006,3),(2006,10,2007,3)  -- 年度と月の売上表
       ALLOCATE DATA ON DBSP_2  SIZE 280K;

■容量拡張先データベーススペース

自動容量拡張するデータベーススペース名を指定します。

スケーラブルログ運を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。スケーラブルログ運用は、Symfoware Server Enterprise Extended Edition、Symfoware Server Enterprise EditionおよびSymfoware Server Standard Editionで使用できます。

容量拡張先データベーススペースには、拡張量に指定した値以上の空き領域を用意してください。
また容量拡張定義を省略した場合、DSIの割付け先のデータベーススペースを容量拡張先データベーススペースとするため、DSIの割付け先のデータベーススペースに拡張量に指定した値以上の空き領域を用意してください。

■アラームポイン

アラームポイントの契機をDSIの使用容量で指定します。

使用容量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。

■拡張契

自動容量拡張の拡張契機をDSIの空きページ容量で指定します。

空きページ容量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。

■拡張

DSIの拡張領域の割付け量を指定します。

拡張量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。


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

All Rights Reserved, Copyright(C) 富士通株式会社 2007-2008