DBMotoはテーブル単位でレプリケーションジョブを作成します。レプリケーションジョブ単位で下記のことが可能となります。
●レプリケーションジョブ単位で行えること
・レプリケーションモード(片方向か、双方向か、全件か、差分か)
・差分レプリケーションの実行間隔(既定は60秒)
・スケジュール(定期全件リフレッシュ実行、差分ミラーリングの除外設定)
また重要なポイントは、レプリケーションジョブ単位でDBに対するクライアントアクセスセッションとなることです。つまりテーブル数が1,000ある場合には、レプリケーションジョブも1,000個となるため、DBへのクライアント接続数も最大1,000となります。これは言いかえると、DBへのセッション数が増大してDBへの負荷がかかる恐れがあることを意味します。
では、これらのレプリケーションジョブをグループ化としてまとめた場合にはどのようになるでしょうか?
●グループ化した際の特徴
・レプリケーションジョブ単位で行えた設定はグループで共通設定となる
・DBへのクライアントアクセスセッションもグループ単位となる
グループ化することによって、DBへの接続セッション数を減らすことが可能となります。例えば、レプリケーションジョブが100個を1グループにまとめた場合にはDBへの接続数は1です。レプリケーションジョブが1,000個で1グループ100ジョブ×10グループの場合は、DBへの接続数は10です。このように、DBへの接続数を大幅に減らすことが可能となるため、テーブル数が多い場合にはグループ化の設定は事実上必須となります。
●グループ化した際のレプリケーションの実行順位は?
グループ化によってセッション数が1となるため、各レプリケーションの実行は下記の順で行われます。
・全件リフレッシュの場合⇒グループ化した際に設定する優先順位で実行される
これは1つのテーブルのリフレッシュが完了次第、次のテーブルのリフレッシュが開始されるイメージです。
・差分ミラーリングの場合⇒トランザクションIDの順に実行される
これは複製元ソースで処理されたトランザクションの順番に処理されるイメージです。外部キーを持った親子テーブルをグループ化していた場合にも正しい順番で処理されることを意味します。親子テーブルはグループ化しないと意図した順番にレプリケーションされませんので、グループ化は必須です。
※親子テーブルをリフレッシュする場合にはリフレッシュ前のTRUNCATEによる複製先ターゲットのテーブルのレコードの削除は設定した優先順位とは反対の順番で行う必要があるが、DBMotoではそのオプションも用意されている
●まとめ(グループ化の利点)
まとめると下記の通りです。
・レプリケーションの設定を1つにまとめられる
・DBへの接続セッション数を減らすことができる
・外部キーを持つ親子テーブルも安全にレプリケーションできる
関連したトピックス
- AS/400でのレコード全消去時における、DBMotoによるミラーリング動作
- 外部キーが設定された親子テーブルのリフレッシュの注意点と簡単設定方法
- DBMotoレプリケーションに必要なPostgreSQLユーザ権限
- 初期同期(リフレッシュ)がより便利に! ステージングリフレッシュ機能
- レコードを削除するDeleteとTruncateの違い
- 初期同期(リフレッシュ)をもっと柔軟にリフレッシュフィルタ機能[DBMoto]
- レプリケーション対象テーブル構成変更後のSyniti Data Replication (旧DBMoto) マッピング対応について
- DBMotoレプリケーションに必要なOracleユーザ権限
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- DBMotoレプリケーションに必要なSQL Serverユーザ権限