Oracle Autonomous Database on Dedicated Exadata InfrastructureでのMongoDB APIの使用
Oracle Database API for MongoDBは、MongoDBワイヤ・プロトコルは、Oracle Databaseによって実行されるSQL文に変換します。MongoDBスキル・セットを持つ開発者は、MongoDBプロトコルを理解するドライバおよびツールを使用するOracle Database用のJSONドキュメント・ストア・アプリケーションを記述できます。このAPIの詳細は、『Oracle Database API for MongoDB』のMongoDBのためのOracle Database APIの概要を参照してください。
MongoDB APIの有効化
OCIコンソールから、またはOracle REST Data Services (ORDS)を使用して手動で、Autonomous DatabaseのMongoDB APIを有効にできます。
Autonomous DatabaseでMongoDB APIを使用するには、顧客管理Oracle REST Data Services (ORDS)を個別にインストールおよび構成する必要があり、ORDSのバージョンは22.3以上である必要があります。このAPIのアーキテクチャの概念の詳細は、『Oracle REST Data Servicesインストレーションおよび構成ガイド』のOracle API for MongoDBサポートを参照してください。
- Autonomous Databaseの「詳細」ページで、「ツール構成」タブを選択します。
- 「ツール構成の編集」をクリックします。
- MongoDB API行で、「ツールの有効化」列を選択して「有効」を表示します。
- 適用をクリックします。
「拡張オプションの表示」を選択し、「ツール」タブを選択して、インスタンスをプロビジョニングまたはクローニングするときにMongoDB APIを有効にすることもできます。
-
ords install adb
コマンドを使用してORDSをインストールおよび構成します。詳細は、Oracle REST Data Servicesインストレーションおよび構成ガイドのAutonomous Databaseでの顧客管理ORDSのインストールおよび構成を参照してください。
- ORDS対応ユーザーを作成します。
- MongoDBシェルを使用してORDSに接続します。
前述のステップのデモは、『Oracle REST Data Servicesインストレーションおよび構成ガイド』のスタート・ガイドを参照してください。
MongoDBアプリケーションの接続
MongoDB APIを有効にした後、MongoDBユーザーを作成し、その接続文字列を使用してAutonomous Databaseに接続できます。
MongoDB API接続文字列を使用すると、MongoDBシェル(コマンドライン・ユーティリティ)を使用して、データを接続して問い合せることができます。
- Autonomous Databaseの「詳細」ページで、「ツール構成」タブを選択します。
- MongoDB API行の「アクセスURL」で、「コピー」をクリックします。
Exadata Cloud@Customer上のAutonomous DatabaseでMongoDB APIを使用している場合、ネットワーク/DNSチームは、MongoDB接続文字列ホスト名がクラスタのSCANに解決されることを確認する必要があります。これがないと、MongoDBクライアントはデータベースに接続できなくなります。ワイルドカードDNSレコードを使用してクラスタ内のすべてのAutonomous Databaseへの接続を許可するか、特定のAutonomous Databaseを許可できます:
MongoDB接続のテスト
MongoDBのテストAutonomous Databaseユーザーの作成
テスト目的で、テスト・ユーザーまたは同様の認証ユーザーを作成できます。
- Autonomous DatabaseのOCIコンソールを開きます。
- 「データベース・アクション」をクリックします。
- データベース・アクションの起動パッドから、「管理」→「データベース・ユーザー」をクリックします。
- 「データベース・ユーザー」ページで「+ユーザーの作成」をクリックします。
- テスト・ユーザーの「ユーザー名」および「パスワード」を入力します。「Webアクセス」をクリックし、表領域DATAの割当て制限を設定します。
- 「付与されたロール」タブをクリックします。
- デフォルトのロールに加えて、ユーザーの
SODA_APP
ロールを選択して追加します。 - 「ユーザーの作成」をクリックします。
コマンドラインを使用した接続のテスト
- テスト・ユーザーでログインします。手順については、前の例のステップに従ってください。
$ mongosh --tls --tlsAllowInvalidCertificates 'mongodb://TESTUSER:<PASSWORD>@<database URL>. <OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false' Current Mongosh Log ID: 614c9e2a01e3575c8c0b2ec7 Connecting to: mongodb://TESTUSER:<PASSWORD>@<database URL>.<OCIregion>.oraclecloudapps.com:27017/admin? authMechanism=PLAIN&authSource=$external&tls=true&loadBalanced=false Using MongoDB: 3.6.2 Using Mongosh: 1.0.7 For mongosh info see: https://docs.mongodb.com/mongodb-shell/admin > show dbs testuser 0 B >
ノート:
URIパーセント・エンコーディングを使用して、接続文字列URIの任意の予約文字(特にユーザー名とパスワードの文字)を置換します。予約文字とそのパーセント・エンコーディングは次のとおりです。
!
#
$
%
&
'
(
)
*
+
%21
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
,
/
:
;
=
?
@
[
]
%2C
%2F
%3A
%3B
%3D
%3F
%40
%5B
%5D
たとえば、ユーザー名が
RUTH
で、パスワードが@least1/2#?
の場合、サーバー<server>
へのMongoDB接続文字列は次のようになります。'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'
使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。
関連トピック
- コレクションを作成し、コレクションにドキュメントを挿入します。
testuser> show collections testuser> db.createCollection( 'fruit' ) { ok: 1 } testuser> show collections fruit testuser> db.fruit.insertOne( {name:"orange", count:42} ) { acknowledged: true, insertedId: ObjectId("614ca31fdab254f63e4c6b47") } testuser> db.fruit.insertOne( {name:"apple", count:12, color: "red"} ) { acknowledged: true, insertedId: ObjectId("614ca340dab254f63e4c6b48") } testuser> db.fruit.insertOne( {name:"pear", count:5} ) { acknowledged: true, insertedId: ObjectId("614ca351dab254f63e4c6b49") } testuser>
- データベース・アクションなどのSQLクライアントを使用してコレクションを問い合せます。
SELECT f.json_document.name, f.json_document.count, f.json_document.color FROM fruit f;
Node.jsアプリケーションを使用した接続のテスト
-
Node.jsをダウンロードします。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。
$ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
-
Node、jsアーカイブの内容を抽出します。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。
$ tar -xf node-v14.17.5-linux-x64.tar.xz
-
PATH
環境変数を構成します。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。$ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
-
Javascriptの例を使用して接続をテストします。
-
新規ディレクトリを作成
$ mkdir autonomous_mongodb $ cd autonomous_mongodb $ npm init –y
-
mongodb依存関係をインストールします。
$ npm install mongodb
-
connect.js
という名前のJavaScriptアプリケーションを作成します。const { MongoClient } = require("mongodb"); const uri = "mongodb://TESTUSER:<PASSWORD>@<Database URI>.<OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false"; const client = new MongoClient(uri); async function run() { try { await client.connect(); const database = client.db('admin'); const movies = database.collection('movies'); // Insert a movie const doc = { title: 'Back to the Future', year: 1985, genres: ['Adventure', 'Comedy', 'Sci-Fi'] } const result = await movies.insertOne(doc); // Query for a movie that has the title 'Back to the Future' :) const query = { title: 'Back to the Future' }; const movie = await movies.findOne(query); console.log(movie); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
ノート:
URIパーセント・エンコーディングを使用して、接続文字列URIの任意の予約文字(特にユーザー名とパスワードの文字)を置換します。予約文字とそのパーセント・エンコーディングは次のとおりです。
!
#
$
%
&
'
(
)
*
+
%21
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
,
/
:
;
=
?
@
[
]
%2C
%2F
%3A
%3B
%3D
%3F
%40
%5B
%5D
たとえば、ユーザー名が
RUTH
で、パスワードが@least1/2#?
の場合、サーバー<server>
へのMongoDB接続文字列は次のようになります。'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'
使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。
関連トピック
-
例を実行します。出力は次のようになります。
$ node connect { _id: new ObjectId("611e3266005202371acf27c1"), title: 'Back to the Future', year: 1985, genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ] }
-
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Oracle Supportへのアクセス
お客様のOracleサポート・サービスへのアクセスおよびご利用は、該当するサービスの注文時に指定された利用条件に従うものとします。