概要
MongoDBのためのOracle Database APIでは、MongoDBアプリケーション、ドライバおよびツールをOracle Databaseに接続できます。APIは、MongoDBワイヤ・プロトコルを介してコマンドを受信し、それらのコマンドをSQL文に変換します。
MongoDBのAPIは、次のユース・ケースをサポートすることを目的としています:
-
ドロップイン互換性: MongoDBからOracle Databaseへの移行は、接続文字列の更新と同じくらい簡単です。単一のデータベース・プラットフォームにアプリケーションを統合することで、メンテナンスとライセンスのコストを削減できます。APIはOracle Databaseライセンスに含まれており、追加のオプションまたは料金は適用されません。「データおよびアプリケーションの移行」を参照してください。
-
既存のスキル・セットの活用: MongoDB用のアプリケーションを構築する開発者は、SQLを学習せずに作業を続行できます。同時に、DBAとアナリストは、分析とレポートのために同じコレクションに対してSQLまたはRESTクエリを実行できます。
-
複数のデータおよびワークロード・タイプ: MongoDBは、主にJSONドキュメントのコレクションに対する操作ワークロードをサポートします。Oracle Databaseは、リレーショナル・データ、JSONデータ、グラフ・データ、空間データ、ベクトル・データ全体にわたって要求の厳しいOLTPワークロードとOLAPワークロードに対応する、一元的でトランスリティカルなプラットフォームです。MongoDBアプリケーションは、Oracle Databaseへの接続時により多くのことが可能になります。
-
高度なパフォーマンス: Oracle Databaseは、パラレル問合せ処理、ストレージ・セル問合せ評価、Oracle Real Application Clustersなどの機能を提供します。OracleのバイナリJSON形式(OSON)は、効率的なインプレース・データ・アクセスを提供し、線形スキャンを必要とするMongoDBのBSON形式よりも高速に実行されます。Oracle Databaseに対して実行されるMongoDBアプリケーションは、多くの場合、応答性、回復力、スケーラビリティを向上させます。
スタート・ガイド
MongoDBアプリケーションは、MongoDBに接続する場合もOracle Databaseに接続する場合も同じように動作します。次のMongoDBシェル・セッション(mongosh)について考えてみます:
mongosh 'mongodb://admin:####@ORACLEDB.oraclecloudapps.com:27017/admin?...'
// create a collection named "employees"
admin> db.createCollection('employees')
{ ok: 1 }
// insert three employee documents into the collection
admin> db.employees.insertOne({_id:1, "name":"SMITH", "job":"CLERK", "sal":800});
{ acknowledged: true, insertedId: 1 }
admin> db.employees.insertOne({_id:2, "name":"ALLEN", "job":"SALESMAN", "sal":1600});
{ acknowledged: true, insertedId: 2 }
admin> db.employees.insertOne({_id:3, "name":"WARD", "job":"SALESMAN", "sal":1250});
{ acknowledged: true, insertedId: 3 }
// find the name and job for employees where the salary is greater than 1200
admin> db.employees.find({"sal" : {$gt : 1200}}, {"name" : 1, "job" : 1, "_id" : 0});
[
{ name: 'ALLEN', job: 'SALESMAN' },
{ name: 'WARD', job: 'SALESMAN' }
]
このシェル・セッションは、コレクションを作成し、ドキュメントを挿入してから、データの一部を取得します。このスクリプトの動作は、MongoDBに対して実行するか、Oracle Databaseに対して実行するかに関係なく同じになります。ただし、Oracle Databaseに対して実行すると、APIによって受信される各コマンドは、対応するSQL文に透過的に変換されます。次の表に、この例のAPIによって内部的に生成されるものと同様のSQLを示します:
| コマンド | mongosh | SQL |
|---|---|---|
| CREATE | db.createCollection('employees'); |
create json collection table "employees"; |
| INSERT | db.employees.insertOne( {_id:1, "name":"SMITH", "job":"CLERK", "sal":800} ); |
insert into "employees" values( '{_id:1, "name":"SMITH", "job":"CLERK", "sal":800}' ); |
| FIND | db.employees.find( {"sal" : {$gt : 1200}}, {"name" : 1, "job" : 1, "_id" : 0} ); |
select e.data."name", e.data."job" from employees e where e.data."sal" > 1200; |
APIで内部的に使用されるこれらのSQL/JSON文は、sqlclなどのSQLクライアントから直接送信することも、$SQL集計ステージを使用して送信することもできます。MongoDBクライアント、SQLツールまたはRESTエンドポイントを介してコレクションにアクセスしたかどうかに関係なく、データは同じOracle Databaseスキーマ内に存在します。チームは、データを複製したり、複雑なデータ移動プロセスを構築したりすることなく、これらのアクセス・パターンを組み合せることができます。SQLは役に立つ場合には常に使用可能ですが、そうでない場合は必要ありません。
APIの有効化
MongoDBのためのOracle Database APIは、Autonomous Databaseデプロイメントを含むOracle Database 23ai以降で使用できます。アクティブ化ステップは、データベース・タイプによって異なります。詳細な手順については、次のリンクを参照してください:
| データベース・タイプ | 説明 |
|---|---|
| Autonomous AI Database Serverless |
マネージド・サービスの一部として利用できます。 MongoDBのためのOracle Database APIの使用 『MongoDB移行のためのクイック・スタート・ガイド』 |
| Autonomous AI Database Dedicated |
マネージド・サービスの一部として利用できます。 専用Exadataインフラストラクチャ上のOracle Autonomous AI DatabaseでのMongoDB APIの使用 |
| その他のすべてのOracle Databaseバージョン |
Oracle REST Data Servicesの一部として、データベースの外部でユーザーが管理します。 MongoDBのためのOracle Database APIのサポート MongoDBのためのOracle Database API – ベスト・プラクティス |
このドキュメントの残りの部分は、3つのすべてのデプロイメント・オプションに適用されます。例では、特に明記されていないかぎり、MongoDBシェル(mongosh)を使用します。