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の使用
OAuth認証を使用して、Autonomous Database上のSODA for RESTにアクセスすることができます。アプリケーションによっては、OAuth認証でSODA for RESTにアクセスすると、パフォーマンスおよびセキュリティが向上することがあります。
SODA for RESTの使用の概要
SODAを使用すると、SQLを使用せずに、NoSQLスタイルの柔軟なアプリケーション開発が可能になります。SODAでは、JSONドキュメントは名前付きコレクションに格納され、単純なCRUD操作(作成、読取り、更新および削除)を使用して管理されます。また、SQLは必要ありませんが、SODAコレクションに格納されているJSONには、必要に応じてSQLから引き続き完全にアクセスできます。たとえば、操作アプリケーションはSODAを使用して(SQLを使用せずに)完全に構築できますが、後でアプリケーションの外部から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"
次のコマンドにより、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
Oracle Database 23aiでAlways Free Autonomous Databaseを使用している場合、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
を使用します。cURLコマンドを使用したSODA for RESTは、Oracle Cloud Shellから使用できます。
次の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の使用
OAuth認証を使用すると、Autonomous Database上のSODA for RESTにアクセスできます。アプリケーションによっては、OAuth認証でSODA for RESTにアクセスすると、パフォーマンスおよびセキュリティが向上することがあります。
OAuth認証を使用してAutonomous Database上のSODA for RESTへのアクセスを制限するには、次のステップを実行します:
RESTfulサービスへのセキュアなアクセスの詳細は「RESTfulサービスへのセキュアなアクセスの構成」を参照してください。