データベース・リクエストのシャードへのルーティング方法

Oracle Globally Distributed Databaseでは、シャーディング・キーがリクエストに指定されているかどうかに応じて、データベース問合せおよびDMLリクエストは2つの主な方法でシャードにルーティングされます。

この2つのルーティング方法は、直接ルーティングおよびプロキシ・ルーティングと呼ばれます。

直接ルーティング

データベース・リクエストでシャーディング・キーを指定することで、シャードに直接接続して問合せおよびDMLを処理できます。直接ルーティングは、パフォーマンスを向上させるためにシャードにアクセスする場合に推奨される方法で、特に利点があります。

プロキシ・ルーティング

アプリケーションでは、複数のシャードからのデータを必要とする問合せや、シャーディング・キーを指定していない問合せを直接ルーティングできません。こうした問合せには、アプリケーションとシャードの間でリクエストをルーティングするためのプロキシが必要になります。プロキシ・ルーティングは、シャード・カタログ問合せコーディネータによって処理されます。

問合せおよびDMLのシャードへの直接ルーティング

シャーディング・キーを提供する場合、アプリケーションはリクエストをシャードに直接ルーティングできます。直接ルーティング・メカニズムでは、リクエストはルーティングされたシャードに属するデータの問合せおよび操作のみが可能です。

シャード上のデータへの直接アクセスには、いくつかの利点があります。

  • パフォーマンスの向上: 全体的に、アプリケーションでは、シャード・カタログを介してリクエストをシャードに間接的にルーティングするよりもパフォーマンスが向上します(プロキシによる)。直接ルーティングでは、リクエストおよび結果がコーディネータ・データベースを通過する必要はありません。

  • シャードの地理的分散に対応します。アプリケーションは、リージョン内でローカライズされたシャード内のデータにアクセスできます。
  • ロード・バランシングが容易: チャンク移動を使用してシャード間でデータを移動することで、シャード間でのアプリケーション・リクエストのロード・バランシングを簡単に実行できます。
  • すべてのタイプの問合せをサポートします。
    • シャード表に対するSELECTINSERTおよびUPDATE: これらのリクエストの有効範囲は、アクセスされるシャードに属するデータです。
    • 重複表に対するSELECTINSERTおよびUPDATE: これらのリクエストの有効範囲は、重複表内のすべてのデータです。重複表のプライマリ・コピーはコーディネータ・データベースに存在するため、重複表のDMLはコーディネータ・データベースに再ルーティングされます。

次の図は、シャードへの直接ルーティングを使用した重複表に対するDMLを示しています。

  1. アプリケーションは、シャードの1つ(シャードDB1)にDMLリクエストを直接送信します。
  2. DMLは、シャードDB1からコーディネータ・データベースに転送され、プライマリ重複表で実行されます。
  3. コーディネータ・データベースのリフレッシュ・メカニズムが定期的に実行され、すべてのシャードで重複表のインスタンスが更新されます。

図8-1 直接ルーティングを使用した重複表のDML



直接ルーティングの詳細は、クライアント・アプリケーション・リクエストのルーティングを参照してください。

直接ルーティング用アプリケーションの開発の詳細は、Oracle Globally Distributed Databaseのアプリケーションの開発を参照

プロキシによる問合せおよびDMLのルーティング

シャード・カタログ問合せコーディネータをプロキシとして使用すると、Oracle Globally Distributed Databaseでは、シャーディング・キーを指定しない問合せおよびDMLのリクエスト・ルーティングを処理できます。

コーディネータをプロキシとして使用することで、Oracle Globally Distributed Databaseでは、問合せを処理するシャードを指定しなくても、任意のデータベース・アプリケーションがSQL文を実行できる柔軟性が提供されます。問合せコーディネータでは、複数のシャードでクロスシャード更新、挿入および削除をパラレルで実行します。

コーディネータの詳細は、問合せ処理と問合せコーディネータを参照してください。

次の図は、プロキシ・ルーティングを使用した重複表に対するDMLを示しています。

  1. DMLリクエストがアプリケーションからコーディネータ・データベースに送信され、プライマリ重複表で実行されます。
  2. コーディネータ・データベースのリフレッシュ・メカニズムが定期的に実行され、すべてのシャードで重複表のインスタンスが更新されます。

図8-2 プロキシ・ルーティングを使用した重複表のDML



この章の残りのトピックでは、プロキシによるデータベース・リクエストのルーティングおよび処理について説明します。