Autonomous DatabaseによるRESTのためのSODAの使用
Autonomous Databaseでは、REST用のSimple Oracle Document Access (SODA)がサポートされています。
- SODA for RESTの使用の概要
「SODA for RESTは、JSONドキュメントをデータベースに格納するために使用できる事前デプロイ済RESTサービスです」。 - SODA for RESTを使用したオーダー・サンプル・データのロード
Oracleには、プレーン・テキスト・ファイルPOList.json
内のJSON購買オーダーの実質的なセットがオブジェクトのJSON配列として用意されており、このような各オブジェクトは文書を表します。 - SODA for RESTをOAuthクライアント資格証明とともに使用
OAuth認証を使用して、Autonomous Databaseの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を使用すると、アプリケーション開発者はNoSQLおよびSQLの最適な機能を利用できます。 - アナリティクスおよびレポート作成のためにSQLを活用する機能を失うことなく、高速で柔軟なスケーラブルなアプリケーション開発。
SODA for RESTはORDSに次のURLパターンでデプロイされます(schemaはREST対応のデータベース・スキーマに対応します)。
/ords/schema/soda/latest/*
次の例では、cURLコマンドライン・ツール(http://curl.haxx.se/)を使用して、RESTリクエストをデータベースに送信します。 ただし、サード・パーティのRESTクライアントおよびライブラリも動作する必要があります。 この例では、REST対応のデータベース・スキーマADMIN
を使用します。 cURLコマンドを使用したRESTのためのSODAは、「Oracle Cloudシェル」から実行できます。
このコマンドは、fruitという名前の新しいコレクションをADMIN
スキーマに作成します:
> curl -X PUT -u 'ADMIN:<password>' \
"https://example-db.adb.us-phoenix-1.oraclecloudapps.com/ords/admin/soda/latest/fruit"
次のコマンドにより、3つのJSONドキュメントをfruitコレクションに挿入します:
> 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)の詳細は、「REST用のSODA」を参照してください
-
SODA for REST HTTP操作の詳細は、「REST HTTP操作用のSODA」を参照してください
SODA for RESTを使用した発注書サンプル・データのロード
Oracleには、プレーン・テキスト・ファイルPOList.json
内のJSONPurchase-Orderの実質的なセットがオブジェクトのJSON配列として用意されており、このような各オブジェクトは文書を表します。
次の例では、cURLコマンドライン・ツール(http://curl.haxx.se/)を使用して、RESTリクエストをデータベースに送信します。 ただし、サード・パーティのRESTクライアントおよびライブラリも動作する必要があります。 この例では、REST対応のデータベース・スキーマADMIN
を使用します。 SODA for RESTは、「Oracle Cloudシェル」からcURLコマンドとともに使用できます。
次のcurlコマンドを使用して、Autonomous Database with SODA for RESTのコレクション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
に格納されているJSONPurchase-Orderコレクションの値の両方が選択されます。 選択した値は、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)の詳細は、「REST用のSODA」を参照してください
-
SODA for REST HTTP操作の詳細は、「REST HTTP操作用のSODA」を参照してください
OAuthクライアント資格証明によるRESTのためのSODAの使用
OAuth認証を使用して、Autonomous Database上のRESTのためのSODAにアクセスできます。 アプリケーションに応じて、OAuth認証を使用してSODA for RESTにアクセスすると、パフォーマンスおよびセキュリティを向上できます。
OAuth認証を使用してAutonomous Database上のSODA for RESTへのアクセスを制限するには、次のステップを実行します:
RESTful Servicesへのセキュアなアクセスの詳細は、「RESTfulサービスへのセキュア・アクセスの構成」を参照してください。