※ 本記事は、Volker Kuhrによる”Which Replicat to choose?“を翻訳したものです。
2023年10月30日
Oracle Goldengateには、次の4種類のレプリカが用意されています:
- Classic Replicat
- Coordinated Replicat
- Integrated Replicat
- Parallel Replicat
- integrated mode
- non-integrated mode
すべてのタイプのReplicatがサポートされており、Replicatの種類を制限する計画はありません。各Replicatには、最適な用途に適した強度と一連のユースケースがあります。高スループット環境の場合、OracleではParallel Replicatを使用することをお薦めします。
Classic Replicat
Classic Replicatは、GoldenGateの初日(最初の製品リリース)からの1番目のReplicatです。低スループットの環境では、Classic Replicatがデータベースの変更について簡単に管理できるので、このClassic Replicatで十分です。Classic Replicatの利点は、リソース使用率が低いことです。Classic Replicatの一般的なユース・ケースは、複数のソース・データベースによって提供されるターゲット・データベースです。50から100のソースが証跡ファイルをターゲット・システムにルーティングする場合、50から100のReplicatグループが存在する可能性があります。

Coordinated Replicat
Coordinated ReplicatはGoldengateのバージョン12.1から使用でき、ワークロードを複数のスレッドにパーティション化するために使用されます。以前は、1つのソース・データベースからのワークロードを管理する20または50のReplicatグループを所有していました。レプリケートする独立したスキーマが100個あるとします。これは管理が難しくなりました。Coordinated Replicatを使用すると、1つのプロセス内で完全なワークロードを管理できます。また、Coordinated Replicatはバリア・イベントを管理することもできます。これらは、DDL、主キー更新(RANGEパーティションを使用する場合)、イベント・アクションおよびSQLEXECです。バリア・イベントの場合、バリア・トランザクションがシリアライズされる前に、すべてのスレッドが作業を終了します。その後、複数のスレッド内の処理が再度処理されます。

Integrated Replicat
Integrated Replicatは、GoldenGateバージョン12.1からも使用できます。Oracle Databasesのみです。Integrated Replicat内には、クライアントGoldenGate Replicatコンポーネントとサーバー・コンポーネント(データベース内のインバウンド・サーバー)があります。高度な適用エンジンは、データベース内で複数のサブプロセスを使用します。1つの適用ネットワーク・レシーバが変更を受信し、1つの適用リーダーが論理変更レコード(LCR)間の依存性を計算し、メッセージをトランザクションにアセンブルします。次に、適用リーダーは、アセンブルされたトランザクションをコーディネータ・プロセスに戻します。リーダー・サーバーからトランザクションを取得するコーディネータ・プロセスは、スケジュールを設定して適用サーバーに渡します。トランザクションのLCRをデータベースに適用する1つ以上の適用サーバー・プロセス(別名Appliers)です。

最も興味深いのは、Integrated Replicatがバリア・トランザクション(Replicatによって直接実行される)を管理するだけではないことです。これに加えて、Integrated Replicatは依存関係の計算も実行します。トランザクション間に依存関係がある場合、Appliersは相互に待機します(依存関係の計算の詳細は、前のブログ記事を参照してください)。単一のClassic Replicatがワークロードに対応できない大容量スループット環境では、依存性の計算により、単一のIntegrated Replicatが適しています。複数のClassic Replicatグループは、依存性の知識がなくても独立して変更を適用します。これは、Integrated Replicatの大きな利点です。これに加えて、Integrated Replicat内にはさらに機能的なオプションもあります。
Parallel Replicat
Parallel Replicatは、GoldenGate for Oracle Databasesのバージョン 12.3以降で使用できます。GoldenGateのバージョン 21ではOracle Databases以外で使用できるようになりました。概念的には、Parallel ReplicatはIntegrated Replicatと非常によく似ています。重要な違いは、Parallel Replicatのロジック全体がデータベースの外部にあることです。
その結果、Parallel Replicatは、DB2、SQL Server、MySQLなどのOracle以外のデータベースに使用できます。Parallel Replicatは、Integrated Replicatの機能拡張です。Integrated Replicatには1つの適用レシーバと適用リーダー・プロセスのみがありますが、Integrated Replicatにはメイン・プロセスへの複数の「入力ストリーム」があり、これはマルチスレッド化され、統合サブスレッドとスケジューラ・サブスレッドに分割されます。もちろん、「出力ストリーム」は、ターゲット・データベースへのトランザクションを処理するアプライヤの並列度によって管理されます。バリアおよびトランザクションの依存性の計算は、データベースの外部にある主要なReplicatプロセスによって処理されます。Parallel Replicatでは、大規模なトランザクションを複数のピースに分割し、トランザクションの整合性を維持しながら適用することもできます(これの詳細は、前のブログを参照してください)。

また、Parallel Replicatのアーキテクチャの進化、およびParallel Replicatの管理および監視機能も強化されています。表のシェイプおよび並列処理の機能に関する情報、GoldenGate統計は並列処理の効率を示し、実行時依存性グラフも使用できます。
Parallel Replicatは次の2つのモードで使用できます:
- 統合モードのParallel Replicat (Oracleデータベース用)
統合モードのParallel ReplicatはIntegrated Replicatとは異なることに注意してください。
例として、統合モードのParallel ReplicatはAutonomous Databaseサーバーレス(ADB-S)でサポートされますが、Integrated Replicatはサポートされません。 - 非統合モードのParallel Replicat (OracleデータベースおよびOracle以外のデータベース用)
統合モードの統合Parallel Replicatには、次のような機能があります:
- DMLハンドラの適用
- 自動競合検出解決(ACDR)
- プロシージャ・レプリケーション
また、統合モードのParallel Replicatはストリーミング・ネットワーク・プロトコルを使用しています。
GoldenGateインスタンスがデータベース・サーバーとは異なるサーバー上にあり、リモートReplicatにDatabase Net Serviceを使用すると、中間層(ハブ)デプロイメントを使用することにした場合、ネットワーク・ディスカッションはさらに行われます。

これらの機能に対する機能要件がある場合は、統合モードでParallel Replicatを使用できます。パフォーマンスに関しては、非統合モードのParallel Replicatの方が一般的です。ただし、ネットワーク・レイテンシが4から5ミリ秒よりはるかに高い中間層(ハブ)デプロイメントでは、統合モードでParallel Replicatを使用できます。
この現在の記事で一貫して説明されているように、Replicatの各タイプには利点があり、特定のユース・ケースに最も適しています。ソース・データベースのワークロードを管理するにはClassic Replicatで十分である低スループット環境の場合は、それを使用し続けることをお勧めします。ワークロードがはるかに高い場合は、並列処理が必要です。ここでは、Parallel Replicatが最適です。
