11.3 UCPを使用した中間層ルーティング
Oracle Databaseリリース18c以降では、Oracle Universal Connection Pool (UCP)に中間層ルーティング機能が導入されています。この機能は、シャーディング機能を使用するOracleのユーザーが、クライアント・アプリケーションからシャード・データベースへの専用の中間層を使用できるようにします。
通常、中間層接続プールは、データベース・リクエストを特定のシャードにルーティングします。このようなルーティングでは、各中間層接続プールから各シャードへの接続が確立されるため、データベースへの接続が多くなりすぎます。中間層ルーティング機能は、各データ・センターまたはクラウド専用の中間層(Webサーバーまたはアプリケーション・サーバー)を持ち、クライアント・データ(クライアント・シャーディング・キーに対応する)を含むシャードが存在する関連する中間層にクライアント・リクエストを直接ルーティングすることで、この問題を解決します。
UCPのOracleShardRoutingCache
クラスは、クライアント・リクエストを適切な中間層にルーティングするために使用できる中間層ルーティングAPIを提供しています。このクラスのインスタンスは、UCPの内部シャード・ルーティング・キャッシュを表します。これは、シャーディング・カタログのユーザー、パスワード、URLなどの接続プロパティを指定することで作成できます。Oracle Databaseリリース19c以降では、新しい接続プロパティserviceName
も指定する必要があります。これはグローバル・サービスの名前です。
ルーティング・キャッシュは、シャーディング・カタログに接続し、シャード・マッピング・トポロジへのキーを取得してキャッシュに格納します。getShardInfoForKey(shardKey, superShardKey)
メソッドは、UCPのルーティング・キャッシュを使用して、指定されたシャーディング・キーのシャードに関する情報を取得します。ShardInfo
インスタンスは、シャードの一意のシャード名と優先度をカプセル化します。中間層APIを使用するアプリケーションは、返された一意のシャード名値を、指定されたシャードへの接続がある中間層にマップできます。
ルーティング・キャッシュは、各ONSイベントをサブスクライブすることによって、チャンクの移動または分割時に自動的にリフレッシュまたは更新されます。