ページの先頭行へ戻る
Interstage Business Application Server 運用ガイド(高信頼性ログ編)
FUJITSU Software

4.7.1 表のDSO定義

表のDSOの定義は、CREATE DSO文を使用して行います。表のDSO定義では、表のタイプとページサイズ、およびCYCLIC_MODEを指定します。

表のタイプには、CYCLICを指定します。

ページサイズの単位は、キロバイトです(1キロバイトは1024バイト)。2、4、8、16、32のどれかを指定します。

CYCLIC_MODEには、必ずCYCLIC_MODE(0)を指定します。

また、DSI分割を行う場合にはWHERE句でDSI分割対象の列名を指定します。

定義例

定義例は、以下の条件を前提としています。

例1

DSI分割を行わない場合

CREATE DSO 業務ログDSO FROM ULOG.業務ログ表
                 ↑                 ↑
               DSO名               表名
TYPE CYCLIC(PAGESIZE(32) , CYCLIC_MODE(0));
                   ↑
                 データ構造

例2

DSI分割を行う場合

CREATE DSO 業務ログDSO FROM ULOG.業務ログ表
                 ↑                 ↑
               DSO名               表名
TYPE CYCLIC(PAGESIZE(32),CYCLIC_MODE(0))
                   ↑
                 データ構造
WHERE (地域コード) BETWEEN ( ? ) AND ( ? ); ← 分割条件
           ↑                ↑        ↑
        列名リスト       仮値リスト  仮値リスト

DSO名

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

表名

格納構造定義に対応する実表の名前を指定します。表名は、スキーマ名で修飾されている必要があります。

データ構造

表のデータ格納時のデータ構造について指定します。DSO定義で表の格納構造を定義する場合には、CYCLICを指定してください。

PAGESIZEは、32キロバイトを指定することをお勧めします。

指定方法の詳細は、“Interstage Business Application Server リファレンス”の“CREATE DSO文”を参照してください。

分割条件

表を行の集まり単位に分割して格納する場合に、分割の条件を指定します。実際の分割単位はDSI定義文で指定します。ここでは、分割のための条件だけを指定します。

各分割単位に格納される行は、列名リストに指定された各列に設定する値と、仮値リストの“?”にDSI定義文の分割キー値で指定された値を代入した結果により決定されます。

列名リストに指定可能な列の数は、最大で64個です。列名リストと仮値リストの“?”の数は、同じでなければなりません。

列名リストに指定可能な列のデータ型については、“表4.1 列名リストに指定可能な列のデータ型”を参照してください。

列名リストに指定する列には、NOT NULLが指定されている必要があります。なお、分割条件で指定された列名リストを分割キーと呼びます。

“=”は、データを限定してDSIに格納する場合に指定します。

BETWEENは、範囲比較でデータをDSIに格納する場合に指定します。

以下に、業務ログ表の地区名と店舗番号を1組の分割キーとした業務ログ表のDSO定義の例を示します。

例1

列名リスト中の列名の個数と仮値リストの“?”の個数の関係

分割条件 : WHERE (地区名) = ( ? )
                   ↑        ↑
              列名 = 1    仮値 = 1

分割条件 : WHERE (地区名) BETWEEN  ( ? )  AND  ( ? )
                   ↑               ↑         ↑
              列名 = 1          仮値 = 1   仮値 = 1

分割条件 : WHERE (地区名, 店舗番号) = (?,?)
                   ↑                   ↑
              列名 = 2             仮値 = 2

分割条件 : WHERE (年度, ) BETWEEN   (?,?)   AND   (?,?)
                     ↑                ↑            ↑
              列名 = 2             仮値 = 2     仮値 = 2

列名リスト中の列数と仮値の“?”の数は同数である。

例2

地区名で分割した例

CREATE  DSO  業務ログDSO  FROM ULOG.業務ログ表
       TYPE  CYCLIC(PAGESIZE(32),CYCLIC_MODE(0) )
       WHERE  (地区名)  =  ( ? );

例3

パーティション分割するキー値を、範囲を区切って分割する例

CREATE  DSO  業務ログDSO  FROM ULOG.業務ログ表
       TYPE  CYCLIC(PAGESIZE(32),CYCLIC_MODE(0) )
       WHERE  (地区コード)  BETWEEN  (?)  AND  (?);