Autonomous DatabaseでのSODA for RESTの使用
Autonomous Databaseは、Simple Oracle Document Access (SODA) for RESTをサポートしています。
- SODA for RESTの使用の概要
SODA for RESTは、JSONドキュメントをデータベースに保存するために使用できる事前にデプロイされたRESTサービスです。 - SODA for RESTを使用した発注書サンプル・データのロード
Oracleでは、JSON発注書の大量のドキュメント・セットをプレーンテキスト・ファイルPOList.json
にオブジェクトのJSON配列として用意しており、各オブジェクトはドキュメントを表します。 - OAuthクライアント資格証明によるSODA for RESTの使用
Autonomous Databaseでは、OAuth認証を使用してSODA for RESTにアクセスできます。アプリケーションによっては、OAuth認証を使用してSODA for RESTにアクセスすると、パフォーマンスおよびセキュリティが向上することがあります。
SODA for RESTの使用の概要
SODAを使用すると、SQLを使用せずに、NoSQLスタイルの柔軟なアプリケーション開発が可能になります。SODAでは、JSONドキュメントは名前付きコレクションに格納され、単純なCRUD操作(作成、読取り、更新および削除)を使用して管理されます。また、SQLは必要ありませんが、SODAコレクションに格納されているJSONには、必要に応じてSQLから引き続き完全にアクセスできます。たとえば、操作アプリケーションは(SQLを使用せずに) SODAを使用して完全に構築できますが、後でアプリケーションの外部からSQLを使用してデータを分析できます。Autonomous Database SODAを使用すると、アプリケーション開発者は、分析およびレポート作成にSQLを利用する機能を失わずに、NoSQLおよびSQLの世界(高速かつ柔軟でスケーラブルなアプリケーション開発)のベストを使用できます。
SODA for RESTは、次のURLパターンでORDSにデプロイされます(schemaはREST対応のデータベース・スキーマに対応しています)。
/ords/schema/soda/latest/*
次の例では、cURLコマンドライン・ツール(http://curl.haxx.se/)を使用して、RESTリクエストをデータベースに送信します。ただし、他のサード・パーティのRESTクライアントおよびライブラリでも機能します。この例では、REST対応のデータベース・スキーマADMIN
を使用します。cURLコマンドを使用したSODA for RESTは、Oracle Cloud Shellから使用できます。
次のコマンドは、"fruit"という名前の新規コレクションをADMIN
スキーマに作成します:
> curl -X PUT -u 'ADMIN:<password>' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit"
次のコマンドは、fruitコレクションに3つのJSONドキュメントを挿入します:
> curl -X POST -u 'ADMIN:<password>' \
-H "Content-Type: application/json" --data '{"name":"orange", "count":42}' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit"
{"items":[{"id":"6F7E5C60197E4C8A83AC7D7654F2E375"...
> curl -X POST -u 'ADMIN:<password>' \
-H "Content-Type: application/json" --data '{"name":"pear", "count":5}' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit"
{"items":[{"id":"83714B1E2BBA41F7BA4FA93B109E1E85"...
> curl -X POST -u 'ADMIN:<password>' \
-H "Content-Type: application/json" \
--data '{"name":"apple", "count":12, "color":"red"}' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit"
{"items":[{"id":"BAD7EFA9A2AB49359B8F5251F0B28549"...
次の例では、格納されたJSONドキュメントをコレクションから取得します:
> curl -X POST -u 'ADMIN:<password>' \
-H "Content-Type: application/json" --data '{"name":"orange"}' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit?action=query"
{
"items": [
{
"id":"6F7E5C60197E4C8A83AC7D7654F2E375",
"etag":"57215643953D7C858A7CB28E14BB48549178BE307D1247860AFAB2A958400E16",
"lastModified":"2019-07-12T19:00:28.199666Z",
"created":"2019-07-12T19:00:28.199666Z",
"value":{"name":"orange", "count":42}
}
],
"hasMore":false,
"count":1
}
次のSQL問合せでfruitコレクションにアクセスします:
SELECT
f.json_document.name,
f.json_document.count,
f.json_document.color
FROM fruit f;
この問合せは、次の3行を返します:
name count color
--------- --------- -------
orange 42 null
pear 5 null
apple 12 red
Always Free Autonomous DatabaseでOracle Database 23aiを使用している場合、Oracleでは次のことをお薦めします:
Oracle Database 21cより前のデータベース・リリースを使用して開始されたプロジェクトの場合、「SODAドライバ」のセクションの例で指定されているように、デフォルト・コレクションのメタデータを明示的に指定します。Oracle Database 21c以降のリリースを使用して開始されたプロジェクトでは、デフォルト・メタデータのみを使用します。詳細は、SODAドライバを参照してください。
これらの例は、SODAおよびSQL/JSON機能の一部を示しています。詳細は、次を参照してください:
-
Simple Oracle Document Access (SODA)の詳細に関するSODA for REST
-
SODA for RESTのHTTP操作の詳細は、「SODA for RESTのHTTP操作」
SODA for RESTを使用した購買オーダー・サンプル・データのロード
Oracleには、大量のJSON購買オーダー・ドキュメントがプレーンテキスト・ファイルPOList.json
にオブジェクトのJSON配列として用意されており、そのような各オブジェクトはドキュメントを表します。
次の例では、cURLコマンドライン・ツール(http://curl.haxx.se/)を使用して、RESTリクエストをデータベースに送信します。ただし、他のサード・パーティのRESTクライアントおよびライブラリでも機能します。この例では、REST対応のデータベース・スキーマADMIN
を使用します。SODA for RESTを使用するには、Oracle Cloud ShellからcURLコマンドを実行します。
次のcurlコマンドを使用すると、SODA for RESTでAutonomous Database上のコレクションpurchaseorder
にこのサンプル購買オーダー・データ・セットをロードできます:
curl -X GET "https://raw.githubusercontent.com/oracle/db-sample-schemas/master/order_entry/POList.json" -o POList.json
curl -X PUT -u 'ADMIN:password' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/purchaseorder"
curl -X POST -H -u 'ADMIN:password' 'Content-type: application/json' -d @POList.json \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/purchaseorder?action=insert"
これにより、この購買オーダー・データを使用して、『Oracle Database JSON開発者ガイド』の例を試すことができます。
たとえば、次の問合せでは、JSON文書のid
と値の両方を、表purchaseorder
の列json_document
に格納されているJSON購買オーダーのコレクションから選択します。値は、仮想列としてドキュメントから投影されるJSON列json_document
のフィールドPONumber
、Reference
およびRequestor
から選択されます(詳細は、JSON_TABLEの代替のSQL NESTED句を参照してください)。
SELECT id, t.*
FROM purchaseorder
NESTED json_document COLUMNS(PONumber, Reference, Requestor) t;
詳細は、次を参照してください:
-
Simple Oracle Document Access (SODA)の詳細に関するSODA for REST
-
SODA for RESTのHTTP操作の詳細は、「SODA for RESTのHTTP操作」
OAuthクライアント資格証明によるSODA for RESTの使用
Autonomous Database上のSODA for RESTにアクセスするには、OAuth認証を使用します。アプリケーションによっては、OAuth認証を使用してSODA for RESTにアクセスすると、パフォーマンスおよびセキュリティが向上することがあります。
OAuth認証を使用してAutonomous Database上のSODA for RESTへのアクセスを制限するには、次のステップを実行します:
RESTfulサービスへのセキュアなアクセスの詳細は、RESTfulサービスへのセキュアなアクセスの構成に関する項を参照してください。