Oracle Autonomous Database on Dedicated Exadata InfrastructureでのMongoDB APIの使用
Oracle Database API for MongoDBは、MongoDBワイヤ・プロトコルをOracle Databaseによって実行されるSQL文に変換します。 MongoDBスキル・セットを持つ開発者は、MongoDBプロトコルを理解するドライバおよびツールを使用するOracle Database用のJSONドキュメント・ストア・アプリケーションを記述できます。 このAPIの詳細な概要は、「MongoDBのOracle Database API」の「MongoDBのOracle Database APIの概要」を参照してください。
MongoDB APIの有効化
Autonomous DatabaseのMongoDB APIは、OCIコンソールから有効にするか、Oracle REST Data Services (ORDS)を使用して手動で有効にできます。
MongoDB APIをAutonomous Databaseとともに使用するには、顧客管理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' ] }
-
オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。
Oracle Supportへのアクセス
お客様のOracleサポート・サービスへのアクセスおよびご利用は、該当するサービスの注文時に指定された利用条件に従うものとします。