Oracle AI Database API for MongoDBの使用

Oracle AI Database API for MongoDBでは、MongoDB言語ドライバとツールを使用してOracle Autonomous AI Databaseに接続できます。

Oracle AI Database API for MongoDBは、Autonomous AI Databaseのコンバージド・データベース機能を活用して、JSONデータを含む複数のデータ型を単一のデータベース内で管理します。たとえば、これらのコンバージド・データベース機能を使用すると、SQLを使用してJSONデータを問い合せたり更新したりできます。

ノート

ノート: MongoDBでは、ACLを使用するようにネットワーク・アクセスを構成するか、Autonomous AI Databaseインスタンスのプライベート・エンドポイントを定義する必要があります。

詳細は、Oracle AI Database API for MongoDBを参照してください。

詳細は、Autonomous JSON Databaseについてを参照してください。

詳細は、Autonomous AIデータベースのワークロード・タイプについてを参照してください。

MongoDBへのアクセスの構成およびMongoDBの有効化

Oracle AI Database API for MongoDBでは、Oracle Autonomous AI Databaseをデータ・ストアとして使用できます。

MongoDB APIを使用するには、新しい自律型AIデータベースを作成および構成するか、既存の自律型AIデータベースの構成を変更できます。

ノート

ノート: MongoDBでは、ACLを使用するようにネットワーク・アクセスを構成するか、Autonomous AI Databaseインスタンスのプライベート・エンドポイントを定義する必要があります。ネットワーク・アクセスの構成に加えて、Autonomous AI DatabaseインスタンスでMongoDB APIを有効にする必要があります。

MongoDBへのアクセスの構成

MongoDB APIを使用するには、新しい自律型AIデータベースを作成および構成するか、ACLを構成するか、プライベート・エンドポイントを定義することで既存の自律型AIデータベースの構成を変更できます。

MongoDBの新しい自律型AIデータベースの構成

Autonomous AIデータベースのプロビジョニングまたはクローニングのステップに従って、ネットワーク・アクセス・タイプを選択します。

adb_network_access_acl_provision.pngの説明が続きます

図adb_network_access_acl_provision.pngの説明

この時点で、Oracle AI Database API for MongoDBを使用するには、次のいずれかのネットワーク・アクセス・タイプを選択して構成することで、セキュアなアクセスを構成します:

MongoDBの既存のAutonomous AIデータベースの構成

自律型AIデータベース・インスタンスのOracle Cloud Infrastructure Consoleを開きます。

adb_ajd_console_details.pngの説明が続きます

図adb_ajd_console_details.pngの説明

ノート

ノート: Oracle AI Database API for MongoDBを使用するには、ネットワークを構成し、アクセス・タイプ許可されたIPおよびVCNsからのセキュアなアクセスのみまたはプライベート・エンドポイント・アクセスのみのいずれかである必要があります。

アクセス・コントロール・リスト(ACL)の設定

詳細は、既存のAutonomous AIデータベース・インスタンスのアクセス制御リストの構成を参照してください。

IPアドレスのACLを構成するには、パブリックIPアドレスを取得する必要があります。パブリックIPアドレスを表示するには、いくつかの方法があります。

  • ネットワーク・アクセス領域の選択で、「IPアドレスの追加」をクリックします。これにより、IPアドレスが「値」フィールドにコピーされます。

  • VPNを無効にした後、WhatIsMyIP Webサイトを使用します。

  • VPNを無効にした後、curlコマンドcurl -s https://ifconfig.meを使用します。

ノート

ノート:パブリックIPアドレスは変更される可能性があります。パブリックIPアドレスを変更する場合は、ACLの変更が必要です。データベースにアクセスできない場合は、ACLがチェック対象である必要があります。

ACLのタイプとユースケース

ACLタイプ ユースケース コメント
IPアドレス 同じパブリックIPアドレスを共有するローカル開発ラップトップ 最も簡単な開始方法。このLANに接続されているラップトップは、データベース資格証明を使用してデータベースにアクセスできます。
CIDRブロック ローカル開発用ノートパソコン IPv4/32表記法の使用
カンマで区切られたIPアドレス 個別のLANに接続された少数のローカル開発ラップトップ(個別のパブリックIPアドレスを持つ) 10以上のラップトップで管理するのは面倒です。
CIDRブロック インターネットに公開されている同じサブネットに接続されたローカル開発ラップトップ(各ラップトップには独自のパブリックIPアドレスがあります) CIDRブロック表記に依存します。詳細は、calculator hereを参照してください。例: 89.84.109.0/2489.84.109.0から 89.84.109.255までの256個のIPアドレスを提供します。
CIDRブロックを含むVCN 独自のVCNおよびコンピュート・インスタンスを持つOCIでホストされているテスト、本番、またはCI/CDパイプライン用 環境タイプごとにOCIコンパートメントを割り当てます。
IPアドレスおよびVCNとCIDRブロックの混合 テスト環境またはCI/CDパイプラインからの接続を使用してテスト自律型AIデータベースにアクセスするローカル開発ラップトップ 継続的な開発作業のための共通構成オプション。

自律型AIデータベースでのMongoDB APIの有効化

Autonomous AI Databaseインスタンスのネットワーク・アクセスを構成したら、MongDB APIを有効にします。

既存のインスタンスに対してMongoDB APIを有効にするには:

  1. Autonomous AI Databaseの詳細ページで、「ツール構成」タブを選択します。

  2. 「ツール構成の編集」をクリックします。

  3. MongoDB API行で、「ツールの有効化」列を選択して「有効」を表示します。

  4. 「適用」をクリックします

MongoDBが有効になるまで、ライフサイクル状態は更新に変更されます。

「拡張オプションの表示」を選択し、「ツール」タブを選択して、インスタンスをプロビジョニングまたはクローニングするときにMongoDB APIを有効にすることもできます。

詳細は、Autonomous AI Database組込みツールの管理を参照してください。

MongoDBのユーザー管理

Oracle AI Database API for MongoDBでは、Oracle Autonomous AI Databaseをデータ・ストアとして使用できます。既存のAutonomous AI Databaseをこの目的で使用する場合は、ワークフローは次のとおりです。

Oracle AI Database API for MongoDBでは、次のようにAutonomous AI DatabaseオブジェクトをMongoDBオブジェクトにマッピングできます:

MongoDBオブジェクト Oracle Autonomous AI Databaseオブジェクト
データベース スキーマ
コレクション テーブル
ドキュメント ドキュメント(列)

たとえば、次のようにOracle AI Database API for MongoDBを使用してコレクションを作成できます。

use scott;
db.createCollection('fruit');

FRUITという名前の表がスキーマSCOTTに作成されます。

Oracle AI Database API for MongoDBに接続する場合、Autonomous AI Databaseのユーザー名とパスワードを使用して認証します。この認証済接続は、対応するスキーマ内のコレクションにアクセスします。このユーザーは、次の要件を満たす必要があります。

ノート

ノート: Autonomous AI DatabaseのロールDWROLEには、これらのロールなどが含まれます。

ユーザーに付与されていないスキーマへのアクセスは禁止されています。たとえば、ユーザーSCOTTは、スキーマSCOTTのコレクションにのみアクセスできます。例外が1つあります。認証されたユーザーにAutonomous AI Database権限CREATE USERALTER USERおよびDROP USERがある場合、そのユーザーは任意のORDS対応スキーマにアクセスできます。

また、これらの権限を持つユーザーは、スキーマを暗黙的に作成できます。つまり、ユーザーが存在しないデータベースにコレクションを作成すると、スキーマが自動的に作成されます。詳細は、Oracle AI Database API for MongoDBを参照してください。

MongoDB用のテストAutonomous AIデータベース・ユーザーの作成

この後のステップでは、データベース・アクションを使用して、適切なロールを持つテスト・ユーザーを作成します。また、Database ActionsのSQLまたは他のSQLコマンドライン・ユーティリティを使用して、SQL文を直接実行することもできます。詳細は、Autonomous AI Databaseでのユーザーの作成- クライアント・ツールを使用した接続を参照してください。

  1. 自律型AIデータベース用のOracle Cloud Infrastructure Consoleを開きます。

  2. 「データベース・アクション」を選択します。

  3. データベース・アクションの起動パッドから、「管理」「データベース・ユーザー」を選択します。

  4. 「データベース・ユーザー」ページで「+ユーザーの作成」を選択します。

  5. テスト・ユーザーの「ユーザー名」およびパスワードを入力します。「Webアクセス」を選択し、表領域DATAの割当て制限を設定します。

    database_actions_create_user_for_mongodb_use.pngの説明が続きます

    図database_actions_create_user_for_mongodb_use.pngの説明

  6. 「付与されたロール」タブを選択します。

  7. デフォルト・ロールに加えて、ユーザーのSODA_APPロールを選択して追加します。

    database_actions_grant_roles_for_mongodb_use.pngの説明が続きます

    図database_actions_grant_roles_for_mongodb_use.pngの説明

  8. 「ユーザーの作成」ボタンを選択します。

テスト目的で、このユーザーまたは同様に認証されたユーザーを使用できます。詳細は、コマンドラインを使用した接続のテストを参照してください。

MongoDBアプリケーションをAutonomous AI Databaseに接続

MongoDBアプリケーションをAutonomous AI Databaseに接続するには、要件に応じていくつかのステップがあります。

Autonomous AI Database MongoDB接続文字列の取得

MongoDB API接続文字列は、Oracle Cloud Infrastructure Consoleから取得できます。

MongoDB API接続文字列を取得したら、コマンドライン・ユーティリティであるMongoDBシェルを使用して、データを接続および問合せできます。

まず、ネットワーク・アクセスを構成し、MongoDB APIを有効にする必要があります。詳細は、MongoDBのアクセスの構成を参照してください。

MongoDB API接続文字列を取得するには:

  1. Autonomous AI Databaseの詳細ページで、「ツール構成」タブを選択します。

  2. MongoDB API行の「Access URL」で、「Copy」をクリックします。

    adb_tools_mongo_connect_string.pngの説明が続きます

    図adb_tools_mongo_connect_string.pngの説明

データベース・アクションからのAutonomous AI Database接続文字列の取得

データの接続および問合せに使用されるコマンドライン・ユーティリティであるMongoDBシェルを使用します。

  1. データベース・アクションを使用して、Autonomous AI Databaseインスタンスの接続文字列を取得できます。

    詳細は、ADMINとしてのデータベース・アクションへのアクセスを参照してください。

  2. 「Database Actions Launchpad」の「関連サービス」で、「Oracle AI Database API for MongoDB」をクリックします。

  3. Oracle AI Database API for MongoDBページで、「コピー」をクリックします。

コマンドラインを使用した接続のテスト

  1. テスト・ユーザーでログインします。詳細は、MongoDB用のAutonomous AI Databaseテスト・ユーザーの作成を参照してください。

    $ 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:**%40**least1**%2F**2**%23****%3F**@*<server>*:27017/ruth/ ...'

    使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。

    詳細は、Percent Encoding - Reserved CharactersおよびUniform Resource Identifier (URI): Generic Syntaxを参照してください。

  2. コレクションを作成し、コレクションにドキュメントを挿入します。
    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>
  3. データベース・アクションなどのSQLクライアントを使用してコレクションを問い合せます。
    SELECT
        f.json_document.name,
        f.json_document.count,
        f.json_document.color
    FROM fruit f;

    database_actions_sql_for_mongodb_use.pngの説明が続きます

    図database_actions_sql_for_mongodb_use.pngの説明

Node.jsアプリケーションを使用した接続のテスト

  1. Node.jsをダウンロードします。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。

    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Node、jsアーカイブの内容を抽出します。ご使用の環境にNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。

    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. PATH環境変数を構成します。ご使用の環境のNode.jsをすでにダウンロードまたはインストールしている場合は、このステップをスキップできます。
    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Javascriptの例を使用して接続をテストします。

    1. 新規ディレクトリを作成
      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init -y
    2. mongodb依存関係をインストールします。
      $ npm install mongodb
    3. 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:**%40**least1**%2F**2**%23****%3F**@*<server>*:27017/ruth/ ...'

      使用するツールまたはドライバによっては、URI接続文字列の一部としてではなく、別のパラメータとしてユーザー名とパスワードを指定できる場合があります。その場合、含まれている予約文字をエンコードする必要はありません。

      詳細は、Percent Encoding - Reserved CharactersおよびUniform Resource Identifier (URI): Generic Syntaxを参照してください。

    4. 例を実行します。出力は次のようになります。
      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }