リフレッシュはテーブルの全レコードを転送するモードです。
ソースのテーブルを直接参照し、ターゲットのテーブルへ登録します。
リフレッシュはテーブルの全レコードを対象としているため、初期レプリケーションとして使用します。リフレッシュ完了後は自動で差分レプリケーションへ切り替わるようにジョブ作成します。またスケジュールにより定期的にリフレッシュを実行することも可能です。
リフレッシュではターゲットへのデータ登録をバルクインサートにより行います。
通常のインサートの場合、レコードごとにINSERTクエリを発行しなければならず、件数が多いと時間を要します。バルクインサートなら、複数のレコードを1つのクエリにまとめることで、処理速度が大幅に向上し、高速なリフレッシュが可能です。
右の図は100万件のレコードをレプリケーションする際の例です。バルクインサートはシングルインサートに比べ約30~50倍パフォーマンスが向上しています。
※クライム環境での検証値のため、環境によって異なります。
ミラーリングはテーブルの変更されたレコードのみを差分としてレプリケーションするモードです。
テーブルへの変更履歴が記録されたログを定期的に参照し、該当テーブルへの変更を検知します。
テーブルの変更されたレコードを検出する方法として3つの方式が用意されており、要件に合わせて選択することが可能です。
参照サイクルとは下記の図のように「レプリケーション処理時間+待機時間」です。既定は60秒で変更も可能です。
差分レプリケーション時はトランザクションログのトランザクションID(シーケンス)単位で行います。
ターゲットへレプリケーションすると同時に、その時のトランザクションIDをSyniti Replicateが保持し、参照サイクルをもって次のレプリケーション時には最後にレプリケーションした際のID以降を参照します。
これによりトランザクションの整合性を維持することが可能で、万が一のネットワーク障害やDB障害の影響を受けません。
シンクロナイゼーションはソースでの変更点をターゲットへ、ターゲットへの変更点をソースへ、それぞれ差分レプリケーションするモードです。双方のDBで更新が必要な連携システムや、切り戻しを兼ねた災害対策構成にて使用できます。
ソースとターゲットで同一レコードに対して更新を行う競合が発生した場合に、Syniti Replicateではソースとターゲットの不整合を回避するためのオプションを用意しています。
3台以上のDB間でマルチシンクロナイゼーションを行うことが可能です。いずれか1台のDBで更新があった場合に、他のすべてのDBにレプリケーションし、全DB間で同期をとることができます。