ORDSは、SQLおよびデータベース・スキルを持つ開発者が、Oracle Database、Oracle Database 12c JSON DocumentストアおよびOracle NoSQL Database用のREST APIを開発できるようにするJavaアプリケーションです。アプリケーション開発者は、クライアント・ドライバをインストールおよび保守することなく、任意の言語環境から、最も広く使用されているAPIテクノロジーであるRESTを使用して他の外部サービスにアクセスするのと同じようにこれらのAPIを使用できます。詳細は、ブログ記事「RESTおよびORDSを使用してOracle DatabaseをRESTful APIサービスに変換する理由」を参照してください
Oracle Database Application Development VirtualBox Applianceをダウンロードします。この無料リソースにはハンズオン・ラボが含まれており、Oracle DatabaseとOracle REST Dataサービスもすでにインストール、設定、および実行されています。このラボでは、非常に便利で完全なORDSの演習セットを個人のマシンで実行できます。
ORDSはすべてのOracle Databaseのライセンスに含まれており、追加費用はかかりません。ORDSをWeblogicで使用するために、Weblogicのライセンスドキュメントの最後に以下の段落が追加されました:「WebLogic Management Frameworkのライセンスには、Oracle WebLogic Server Standard Editionの制限付き使用ライセンスが含まれます。Oracle WebLogic Server Standard Editionは、Oracle REST Data Servicesで使用されるJavaサーブレットのホスティングにのみ使用できます。Javaサーブレットは、Oracle HTTP Server mod_plsqlの機能置換です。」したがって、WebTierライセンス内には、Oracle Rest Data Servicesで使用されるJavaサーブレットをホストするためのWL SEのRULがあります。
ORDSは、Oracle Public Cloud上でもオンプレミスと同じように動作します。Oracle Exadata Express Cloud Serviceでアカウントを作成し、ORDSを使用してREST対応アプリケーションの簡単なデモを構築する方法については、ブログ記事「QUICK DEMO >> A Great Use Case for REST on the Oracle Exadata Express Cloud Service」を参照してください。
ORDSは、GETやPOSTのようなRESTコールで、SQLやPL/SQLハンドラにどのようにパラメータを受け渡しするのですか?
ORDSでは、POSTやPUTなどの一部のRESTコールの本体内、問合せ文字列やルートパターンとしてのURI内、およびHTTPヘッダー内で、inパラメータとoutパラメータの両方を渡すことができます。これについては、ブログ記事「ORDS Mechanisms for Passing Parameters 」を参照してください。また、RESTコールの本文でJSONや画像、その他のmineタイプを渡すためのbodyバインド変数については、「Worked Example: Storing JSON in Your Relational Schema」を参照してください。
そのとおりです。RESTfulサービス・モジュールは、任意の有効なSQLまたはPL/SQLブロックを実行できます。単純にストアドプロシージャを実行するエンドポイントを作成したい場合は、APIを手動で作成する必要があります。これについては、ブログ記事「ORDS Mechanisms for Passing Parameters」を参照してください。また、HTTPヘッダの使用やその他の役に立つトピックについては、ブログ記事「ORDS and PL/SQL」を参照してください
今後のバージョンのORDSでは、POSTを介したストアドプロシージャのリモート実行のための自動エンドポイントがサポートされるようになる予定です。
RESTful APIを公開するには、OpenAPI Initiative標準(旧Swagger)を使用することをお薦めします。これは非常に人気のAPIフレームワークで、Oracle Cloud PaaS API Catalog Cloud Serviceで使用されています。人間やコンピューターによる消費を容易にするため、APIは公開することができます。素晴らしいのは、APIコールを行うために、ほぼすべてのプログラミング言語でコード・スタブを生成できることです。
ORDSの今後のバージョンには、自動Swagger統合が含まれる予定です。
これは予期される動作であり、エラーではありません。ORDSで定義したリソースをURIに指定する必要があり、たとえば、https://<hostname><:port>/ORDS/<module>/<template>のように指定し、そのリソースに対してGETなどのリクエストを処理するためのハンドラをORDSに作成する必要があります。これは、将来のリリースまたはORDSで変更される可能性があります。
ORDSは、Oracle Weblogic Server (WLS)、TomcatおよびGlassFish (非推奨) の3つのアプリケーション・サーバーでサポートされています。Glassfishのサポートは、将来のリリースでは廃止される予定となっています。
なお、ORDSはIBM Websphere Application ServerやMicrosoft Application Server上では動作しません。
ORDSは、スタンドアロンJavaプロセスとして実行することもできます。この構成では、ORDS RESTおよびApplication Express (APEX) アプリケーションにサービスを提供するために、組み込みの専用Jetty Webサーバーを使用します。
スタンドアロンは本番での使用がサポートされていますが、URIの書き換えやNCSAアクセスログなど、本番環境に不可欠と思われる「すぐに使える」機能が欠けています。
スタンドアロンモードでORDSを実行するためのヒントについては、ブログ記事「How to add an NCSA style Access Log to ORDS Standalone」を参照してください。
オンプレミス導入では、java -jar ords.warバージョンを使用します。
また、ORDSの特定のインスタンスによってサービスされているデータベースのORDSメタデータカタログを照会することもできます。例:
select 'ORDS is ' || version "Version of ORDS" from ords_metadata.ords_schema_version;
はい。ORDSは、Oracle Weblogic Server、Tomcat、Glassfish、Jetty(スタンドアロン)など、ORDSがサポートするすべてのアプリケーション・サーバー環境でUCP(Universal Connection Pool)とともに動作します。また、UCPは高速接続フェイルオーバーをサポートします。詳細については、ブログ記事「Does ORDS Support RAC Fast Connection Failover」を参照してください。
本番環境またはテストモードで負荷がかかっている状態でORDSを実行し始めたときにユーザーが経験する可能性のある一般的な問題は、データベース接続数が少なすぎるためにパフォーマンスが低下することです。ORDS は Oracle Universal Connection Pool (UCP) を使用しています。ORDSのデフォルトでは、作成される初期接続数は3、許可される最大接続数は10であり、アクティブな環境では少ないほうであると言えます。このような場合、jdbc.InitialLimitおよびjdbc.MaxLimit構成ファイルのパラメータを大きい値に設定して、これらの値を増やすことができます。詳しくは、『Oracle REST Data Services Installation, Configuration, and Development Guide』のセクションA.5「Understanding Configurable Parameters」を参照してください。
次の4つの優れた実例をご覧いただけます。
1) 「RESTfulサービス・スタート・ガイド」というドキュメントの章では、ORDSを使用したRESTful APIの設定の基本を説明し、APIを保護するためのOAuth2セキュリティの設定について説明します。
2) 「RESTful サービスへのセキュアなアクセス設定」というドキュメントの章では、ORDS がサポートするさまざまなセキュリティオプションの設定について、ファーストパーティ Cookie ベースの認証や 2 段階および 3 段階の OAuth2 セキュリティを含む、より詳細な例を提供しています。
3) 「開発チュートリアル:イメージギャラリーの作成」というドキュメントの章では、OAuth2セキュリティの設定を含む、画像の保存と取得のためのより複雑なアプリケーションの設定例が紹介されています。
4) ORDS Hands-On Labでは、OAuth2セキュリティの設定手順を説明するラボが追加されました。
ORDS PL/SQL API を使用して RESTful API を作成する例が見たいです。
「ORDS PL/SQL Package Reference」というドキュメントの章にはいくつかの例が記載されています。また、ブログ記事「Create an ORDS RESTful Service Using PL/SQL」では、ORDS PL/SQL API を使用して RESTful サービスを作成する手順を最初から最後まで説明しています。また、「Inserting Nested JSON Objects Into Relational Tables Using ORDS」および「Generating Nested JSON From Relational Data with ORDS」というブログ記事では、ORDS PL/SQL APIを使用して、これらのユースケースに対応するRESTfulサービスをセットアップする実例が紹介されています。
ORDSでは、ISO 8601(より正確にはRFC3339)を使用して、文字列内の日付をエンコードします。通常、書式はdd-mmm-yyyyです(例: 2017年1月15日)。ORDSは、Oracle Databaseで値を挿入または更新するときに、この形式のJSON文字列をOracle Dateデータ型に自動的に変換します。ORDSは、JSON文字列に変換するときに、Oracle Dateデータ型をこの文字列形式に自動的に変換します。時間およびタイムゾーンの処理の詳細など、さらに詳しい情報については、ブログ記事「Working with Dates Using ORDS」を参照してください。
これを行う非常に優れた方法は、Oracle Database 12cで使用可能なjson_tableなどのSQL/JSON関数を使用することです。詳細については、ブログ記事「Inserting Nested JSON Objects Into Relational Tables with ORDS」を参照してください
これを行う非常に優れた方法は、Oracle Database 12c Release 2で利用可能なjson_objectやjson_arrayaggなどのSQL/JSON関数を使用することです。詳細については、ブログ記事「Generating Nested JSON From Relational Data With ORDS」を参照してください。
モジュールまたは個々のテンプレート定義でページ区切りをゼロに設定します。
JSONを保存するには、PUTまたはPOSTコールの本文に含まれるJSONを使用して列を更新する必要があります。JSONを取得またはGETして戻すには、リソース・メディア・タイプを使用します。例については、ブログ記事「Storing JSON in Your Relational Schema」および「Working with RESTful Services, BLOBs, and Media Types」を参照してください。
これを行う効果的な方法は、見つかったデータベースのORDS、SODAおよびJSONのフォーラムに移動することです。
ご購入をお考えですか?
営業担当者に問い合わせる営業担当者とチャットアカウント/サブスクリプション、プロモーションの問題
チャットを開始テクニカルサポート、またはその他のサポートリクエスト
サポート・オプションを表示