Hitachi

HiRDB データ連動機能 HiRDB Datareplicator Version 10


4.7.3 反映方法の設計

データの反映方法として,次の項目を設計する必要があります。

〈この項の構成〉

(1) 反映処理の方式の設計

反映処理の方式には,トランザクション単位反映方式と表単位反映方式の二つがあります。トランザクション単位反映方式と表単位反映方式の詳細については,「3.3.3 反映処理の方式」を参照してください。

反映処理の方式は,反映環境定義のstartmode又はbreakmodeで指定します。

(a) トランザクション単位反映方式

抽出側DBで更新されたトランザクション順に反映側HiRDBのデータベースに反映します。

トランザクション単位反映方式では,同一形式の表(表名,列名,属性がすべて同じ表)に反映する場合は,反映定義を省略できます。

(b) 表単位反映方式

一つ又は複数の反映対象表ごとに反映グループを作り,各グループに並列に反映します。反映グループは,一つの反映処理に最大128個定義できます。反映グループは反映グループ定義で指定します。反映グループ定義については,「5.10.6 反映グループ定義」を参照してください。

表単位反映方式には,次に示す3種類があります。

  • 表単位分割方式

  • キーレンジ単位分割方式

  • ハッシュ分割方式

表単位分割方式

表単位分割方式では抽出側DBで更新されたトランザクションを,ユーザの定義した反映グループごとに分けて,並列に反映します。

表単位分割方式で反映処理を実行する場合に,表同士で参照制約があるときは,参照制約がある表を同一グループとしてください。

キーレンジ単位分割方式

キーレンジ単位分割方式では抽出側DBで更新されたトランザクションを,ユーザが定義したキーレンジに従って,並列に反映します。キーレンジ分割方式で反映処理を実行する場合には,次の点に注意してください。

  • 一つの反映グループに定義できるキーレンジは,最大8個です。

  • キーレンジ分割条件文に指定できる列名は,抽出対象表のマッピングキーになる列に対応する,反映対象表の列名だけです。

  • 一つのキーレンジ分割条件では,条件文を最大8個指定できます。一つのキーレンジ分割条件に複数の条件文を指定すると,すべての条件文がAND結合され,複雑なキーレンジ分割条件も指定できます。ただし,複雑なキーレンジ分割条件を指定すると,条件文の判定のために性能が低下する場合があります。分割よりも性能を重視する場合には,一つのキーレンジ分割条件に指定する条件文を少なくしてください。

  • 一つのキーレンジに対して反映処理が集中する場合には,キーレンジ分割しないときより,性能が低下する場合があります。これはキーレンジ分割しないときと同様に処理が分散されていなく,さらにキーレンジ分割の判定処理を実行するためです。この場合には,反映側Datareplicatorを正常終了,又は即時終了し,反映処理が集中したキーレンジを,さらに分割した後,反映側Datareplicatorを再起動してください。

  • CPU性能が低い状態で多数の反映プロセス,SQLプロセスを起動させた場合には,マシンに掛かる負荷によって反映側Datareplicatorが異常終了することがあります。これを防ぐためには,反映処理の少ないキーレンジをother条件などでまとめ,1回で起動するプロセス数を少なくしてください。

ハッシュ分割方式

ハッシュ分割方式では抽出側DBで更新されたトランザクションを,ハッシュ法で並列に反映します。

(2) マルチFES機能を使う場合の反映処理の方式の設計

反映側HiRDBがマルチFES機能を使っている場合,反映側DatareplicatorでもマルチFES機能に対応した反映処理を実行できます。マルチFES機能を使うときは,反映定義で反映グループに対応する反映先のフロントエンドサーバを指定する必要があります。反映側Datareplicatorでは,反映定義に従って反映先のフロントエンドサーバごとにSQLプロセスを対応付けます。このため,反映先のフロントエンドサーバごとに並行してSQL文を発行でき,フロントエンドサーバの負荷を分散できます。

表単位反映方式の分割方式ごとにマルチFES機能を使う例と,マルチFES機能を使うときの考慮点を次に示します。

(a) 表単位分割方式の場合

表単位分割方式の場合には,反映側HiRDBでサーバ単位に表をグループ化して格納していると,反映先のフロントエンドサーバごとに並行してSQL文を発行できるため,最もスループットの向上が期待できます。表単位分割方式でマルチFES機能に対応した例を次の図に示します。

図4‒40 表単位分割方式でマルチFES機能を使う例

[図データ]

(b) キーレンジ単位分割方式の場合

キーレンジ単位分割方式では,反映側HiRDBで横分割したキーレンジ単位に,別のサーバに表を分割して格納しているときに,反映先のフロントエンドサーバごとに並行してSQL文を発行できるため,スループットの向上が期待できます。

キーレンジ単位分割方式でマルチFES機能を使う例を次の図に示します。

図4‒41 キーレンジ単位分割方式でマルチFES機能を使う例

[図データ]

(c) ハッシュ分割方式の場合

ハッシュ分割方式では,反映側HiRDBで表を分割して格納している場合に,ハッシュ法に従ってフロントエンドサーバごとに並行してSQL文を実行します。キーレンジ単位分割方式に比べて,マルチFES機能でのフロントエンドサーバごとに処理を分割できるので,スループットの向上が期待できます。

ハッシュ分割方式でマルチFES機能を使う例を次の図に示します。

図4‒42 ハッシュ分割方式でマルチFES機能を使う例

[図データ]

マルチFES構成にしているシステムの場合,ハッシュ分割方式では,分割されるエリア別に,反映するデータをどのフロントエンドサーバで処理するかをあらかじめ設定できます。これによってフロントエンドサーバの負荷を分散でき,またフロントエンドサーバとRDエリアの属するバックエンドサーバが同じサーバ上にあるときには,フロントエンドサーバとバックエンドサーバの間の通信オーバヘッドを削減できます。

(d) 考慮点

反映側HiRDBのマルチFES環境に対して,反映定義で指定した反映先のフロントエンドサーバと実際に反映処理を実行するバックエンドサーバの起動するマシンが異なる場合には,1回の反映処理ごとにフロントエンドサーバとバックエンドサーバとの間の通信が発生して,効率的な処理が実行できません。このため,反映定義でフロントエンドサーバを指定する場合には,表データを格納しているマシンで起動しているフロントエンドサーバを指定してください。

(3) 反映処理のDISCONNECT発行間隔の設計

反映処理が反映情報キューファイルに蓄積されている更新情報の終端を検知してから,反映側HiRDBに対してDISCONNECTを発行するまでの間隔を設計します。反映処理のDISCONNECT発行間隔は,反映システム定義のdiscintvlオペランドで指定します。

DISCONNECT発行間隔の考慮点を次に示します。

(4) イベント機能による反映処理の自動制御の設計

イベント機能を使って,抽出側システムで発行させたイベントに従って,反映処理の動作を切り替えることができます。イベント機能を使う場合,反映側Datareplicatorでは,抽出側システムで発行するイベントに対応させるイベントコードを反映環境定義で指定します。ここでは,切り替えができる反映処理の動作と,考慮点について説明します。

(a) イベント機能によって切り替えができる反映処理の動作

イベント機能によって切り替えができる反映処理の動作と反映環境定義との関係を次の表に示します。

表4‒42 切り替えができる反映処理の動作と反映環境定義との関係

イベント種別

反映処理の動作

指定するオペランド

反映処理停止イベント

反映処理を停止します。

eventspd

トランザクション単位反映イベント

反映処理の動作中に,反映方式をトランザクション単位反映方式に切り替えます。

eventtrn

表単位反映イベント

反映処理の動作中に,反映方式を表単位反映方式に切り替えます。

eventtbl

トランザクション単位反映再起動イベント

反映処理の停止中に,反映処理をトランザクション単位反映方式で再起動します。

eventretrn

表単位反映再起動イベント

反映処理の停止中に,反映処理を表単位反映方式で再起動します。

eventretbl

反映処理数リセットイベント

反映側Datareplicatorの反映処理数をリセットします。

eventcntreset

(b) イベント機能を使う場合の考慮点

  • 抽出側システムで発行するイベントコードに対応するイベントコードを,反映環境定義の該当するオペランドに指定してください。

  • 反映環境定義で指定されていないイベントコードに対応するイベントを抽出側システムで発行すると,反映側システムのsyslogファイルにメッセージが出力されます。これを利用して,抽出側システムの何らかの動作を,反映側システムに連絡できます。例えば,抽出側システムが終了したときに,反映側システムでは指定されていないイベントを抽出側システムから発行し,抽出側システムが終了したことを反映側システムに連絡することもできます。

(5) 反映処理のCOMMIT発行間隔の設計

コミットを発行する単位は,抽出側システムのトランザクション数で指定します。反映側HiRDBにコミットを発行する間隔は,反映環境定義のcmtintvl,trncmtintvl,又はtblcmtintvlオペランドで指定します。

コミットの発行間隔の設定時の考慮点を次に示します。

(6) 反映定義で定義されていない更新情報に対する処理の設計

反映定義で定義されていない更新情報について,その更新情報が定義された抽出側システムの抽出定義を反映定義と仮定して,反映処理を実行するかどうかを設計します。反映定義で定義されていない更新情報に対する処理は,反映環境定義のdefmergeオペランドで指定します。

反映定義で定義されていない更新情報に対する処理の考慮点を次に示します。

(7) 反映対象表の存在チェックの設計

反映側Datareplicatorの起動時に,反映対象表が反映側HiRDBに存在するかどうかをチェックするかどうかを設計します。

反映対象表の存在チェックは,反映環境定義のtblcheckオペランドで指定します。

(8) 定義情報格納用共用メモリサイズの設計

反映側Datareplicatorを起動すると,定義情報格納用共用メモリは共用メモリ上に保持されます。定義情報格納用共用メモリサイズは,反映環境定義のdefshmsizeオペランドで指定します。

定義情報格納用共用メモリサイズの見積もり時の考慮点を次に示します。

(9) 反映側HiRDBのリソースの設計

(a) 排他資源数

次の二つのうち大きい方の排他資源数を,反映先HiRDBのリソースとして見積もってください。また,抽出側HiRDBで実行するpdloadをデータ連携する場合,反映側ではすべてINSERT文に置き換えて実行します。よって,INSERTごとに排他資源が必要になります。そのため,HiRDBの排他資源を多量に消費し,反映側Datareplicatorの反映処理が排他資源不足で,SQLエラーとなる場合があります。pdloadをデータ連携する場合は,反映側DBの排他資源数をpdloadによる挿入件数以上とするように見積もってください。

  • load文で定義したすべての反映表に対して,SQL文"select * from 反映表"をPREPAREしたときの排他資源数

  • 反映処理のCOMMIT間に発行するSQL文(INSERT文,UPDATE文,DELETE文)を実行できるだけの排他資源数

排他資源数の見積もりの詳細については,マニュアル「HiRDB システム定義」を参照してください。

(b) HiRDBに同時に接続するデータ連動識別子の数

HiRDBに同時に接続するデータ連動識別子の数を,HiRDBの定義のpd_max_usersオペランドの指定値に加算してください。HiRDBに同時に接続するデータ連動識別子の数は,反映システム定義に定義しているデータ連動識別子ごとに,次の数になります。

トランザクション単位反映モードの場合

1個

表単位反映モードの場合

反映定義に定義しているgroup文で指定した分割数の合計数

注※

分割数の詳細を次に示します。

  • 表単位分割方式:1個

  • キーレンジ単位分割方式:キーレンジ分割数

  • ハッシュ分割方式:ハッシュ分割数,又はSQL分割数

(例)

group G1 by T1 :1個

group G2 by T2 :1個

group G3 by T3 :5個

hash divide into 5

上記の場合,HiRDBに同時に接続するデータ連動識別子の数は7個(1+1+5)になります。

(c) HiRDBに同時にアクセスするテーブル数

HiRDBに同時にアクセスするテーブル数を,HiRDBの定義のpd_max_access_tablesオペランドの指定値に加算してください。HiRDBに同時にアクセスするテーブル数は,反映定義に指定したload文の数になります。