3 複数のデータベースに対するOracle REST Data Servicesの構成

Oracle REST Data Servicesでは、複数のデータベースに接続する機能がサポートされています。この項では、リクエストを適切なデータベースにルーティングするための異なる戦略を説明します。

3.1 リクエストURLについて

Oracle REST Data Servicesは、リクエストを適切なデータベースにルーティングするための多数の異なる戦略をサポートしています。これらの戦略はすべて、リクエストURLを調べ、URLのどこかの一致に基づいてデータベースを選択することを利用しています。それは、リクエストURLの関連する部分をまとめるのに役立ちます。次のURLについて考えます。

https://www.example.com/ords/sales/f?p=1:1

このURLは、次のセクションで構成されています。

  • プロトコル: https

  • ホスト名: www.example.com

  • コンテキスト・ルート: /ords

    コンテキスト・ルートは、アプリケーション・サーバー上のOracle REST Data Servicesがデプロイされている場所です。

  • リクエスト・パス: /sales/f?p=1.1

    これは、リクエストURLのコンテキスト・ルートからの相対となる部分です。

異なるアプリケーションに対しては、リクエスト・パス内の特定の接頭辞またはリクエストURL全体の特定の接頭辞に基づいてリクエストをルーティングすることが重要です。

複数データベースを構成するには、次の2つのステップを行います。

  1. データベース接続情報の構成

  2. どのリクエストをどのデータベースにルーティングするかの構成

3.2 追加のデータベースの構成

最初にOracle REST Data Servicesを構成するとき、defaultという名前のデフォルトのデータベース接続を構成します。installコマンドを使用して追加のデータベース接続を作成できます。

ヒント:

installコマンドの完全なヘルプを表示するには、次のように入力します。

ords install --help
追加のデータベース接続プールを追加するには、次のコマンドを入力します。
ords --config <configuration folder> install
次のプロンプトが表示されます。
Oracle REST Data Services - Interactive Install

  Enter a number to select the type of installation
    [1] Install or upgrade ORDS in the database only
    [2] Create or update a database pool and install/upgrade ORDS in the database
    [3] Create or update a database pool only
  Choose [1]: 
オプション2を選択します

Enter a number to select the database pool to update, or create an additional database pool.
  The selected (or created) database pool will be used to install or upgrade ORDS in the database.
    [1] default      jdbc:oracle:thin:@//localhost:1521/orcl
    [2] Create an additional database pool
  Choose [1]: 

オプション2を選択します

Enter the database pool name:

db2と入力します

これが新しいプールのマッピング・パターンになります。デフォルト・プールの初回設定と同様に、引き続きプロンプトに応答します。

3.3 拡張ルーティング

デフォルトでは、追加のデータベースは、ORDSのインストール中に指定されたデータベース・プール名を使用してマップされます。または、次の項で説明するように、パス接頭辞またはホスト名に基づいてカスタム・マッピングを実行することもできます。

ノート:

カスタム・マッピングが構成されている場合、データベース・プール名を使用したデフォルト・マッピングは有効になっていません。

3.4 リクエスト・パスに基づくルーティング

pathsファイルを使用して、リクエスト・パスに基づいたリクエスト・ルーティング・ルールを作成できます。これを行うには、次のステップを実行します:
  1. ファイル<ords_config_folder>/databases/<database_name>/pathsを開くか作成します
  2. このデータベースによって提供されるパスを入力します。

pathsファイルの場所の例

ords_conf/
+-- databases/
|   +-- db1/
|   |   +-- wallet/
|   |   +-- paths
|   |   +-- pool.xml
|   +-- db2/
|       +-- wallet/
|       +-- paths
|       +-- pool.xml
+-- globals/
例: ords_conf/databases/db1/paths
sales
例: ords_conf/databases/db2/pathsords_conf/databases/db2/paths
support
/finance/department1

前述のルールは、次のすべてのリクエストと一致します。

http://example.com/ords/sales --> db1
http://example.com/ords/sales/leads --> db1
https://www.example.com/ords/sales/forecasting.report?month=jan --> db1 (If www.example.com resolves to the same system as example.com.)

http://example.com/ords/support --> db2
http://example.com/ords/finance/department1 --> db2

3.5 リクエスト・ホスト名に基づくルーティング

hostnamesファイルを使用して、ホスト名に基づいたリクエスト・ルーティング・ルールを作成できます。これを行うには、次のステップを実行します:

  1. ファイル<ords_config_folder>/databases/<database_name>/hostnamesを開くか作成します。
  2. このデータベースによって提供されるホスト名を追加します。
hostnamesファイルの場所の例:
ords_conf/
+-- databases/
|   +-- db1/
|   |   +-- wallet/
|   |   +-- hostnames
|   |   +-- pool.xml
|   +-- db2/
|       +-- wallet/
|       +-- hostnames
|       +-- pool.xml
+-- globals/

例: ords_conf/databases/db1/hostnames

www.example.com
example.org
例: ords_conf/databases/db2/hostnames
foo.bar.com

前述のルールは、次のようにリクエストを対応するデータベース接続に一致させます。

http://www.example.com/ords/ --> db1
http://example.org:8080/ords/f?p=1:1 --> db1
https://foo.bar.com/ords/myschema/resource --> db2

前述のルールは、次のリクエストに一致しません。

http://example.com/ords/ (The hostname is missing the www.)
http://foo.bar.net/ords/myschema/resource --> db2 (hostname is different