Symfoware Parallel Server RDBユーザーズガイド データベース定義編
目次 索引 前ページ次ページ

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

2.7.3 表のDSI定義

表のDSIの定義は、CREATE DSIを使用して行います。表のDSI定は、表のDSO定義に従ってデータベーススペースの割付けを行います。また、データを圧縮して表に格納する場合は、表のDSIの定義時にデータ圧縮指を指定します。データ圧縮指定をすることにより、データベースの容量を縮小して、データの入出力性能を向上することができます。

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

表のDSI定義

(1) DSI名

(2) DSO名

(3) データベーススペース指定

(4) 割付け量

(5) スペース割付け

備考.上記の例では、並列数は3になります。

(1) DSI名

(2) DSO名

(3) 分割キー値

(4)データベーススペース指定

(5) 割付け量

(6) スペース割付け

備考.上記の例では、並列数は3になります。

(1) DSI名

(2) DSO名

(3) 分割キー値

(4) データベーススペース指定

(5) 割付け量

(6) スペース割付け

(1) DSI名

(2) DSO名

(3) 分割キー値

(4) データベーススペース指定

(5) 割付け量

(6) データベーススペース指定

(7) 割付け量

(8) スペース割付け

(1) DSI名

(2) DSO名

(3) データ圧縮指定

(4) データベーススペース指定

(5) 割付け量

(6) スペース割付け

備考.上記の例は、表の分割運用を適用せず、かつ並列数が3の場合です。

■DSI

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

■DSO名

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

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

■データ圧縮指

データを圧縮して表に格納する場合に、データ圧縮指定としてCOMPRESSを指定します。圧縮されるデータは、空白データ、ゼロデータおよびナル値データです。データ圧縮指定を指定した場合、データベーススペースの割付け量は、データ圧縮指定しないときよりも少ない量で済みます。必要な割付け量は、データがどの程度圧縮されるかによって決まります。データ圧縮の方法および割付け量については、“見積り式”を参照してください。

■分割キー

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

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

ある行(データ)の格納先が、複数の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定義で指定されたページ長によりアクセスされます。

■データベーススペース指定

実際にデータを格納する、物理的なデータベーススペース名を指定します。

表のデータ構造が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 


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

All Rights Reserved, Copyright(C) 富士通株式会社 2006