表のDSOの定義は、CREATE DSO文を使用して行います。表のDSO定義では、表のタイプとページサイズ、およびCYCLIC_MODEを指定します。
表のタイプには、CYCLICを指定します。
ページサイズの単位は、キロバイトです(1キロバイトは1024バイト)。2、4、8、16、32のどれかを指定します。
CYCLIC_MODEには、必ずCYCLIC_MODE(0)を指定します。
また、DSI分割を行う場合にはWHERE句でDSI分割対象の列名を指定します。
■定義例
定義例は、以下の条件を前提としています。
ページサイズは32キロバイトで利用する(推奨)
エントリごとにデータベーススペースを分けることで、危険分散を行う
1つのエントリサイズは10メガバイトとし、エントリは4つ作成する
エントリ満杯時にログの上書きはしない
例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 (?); |