MongoDB-API mit Oracle Autonomous Database on Dedicated Exadata Infrastructure verwenden

Die Oracle Database-API für MongoDB übersetzt das Wire-Protokoll MongoDB in SQL-Anweisungen, die von Oracle Database ausgeführt werden. Damit können Entwickler, die über MongoDB-Skills verfügen, JSON-Dokumentspeicheranwendungen für Oracle Database schreiben, die Treiber und Tools verwenden, die das MongoDB-Protokoll verstehen. Einen detaillierten Überblick über diese API finden Sie unter Überblick über Oracle Database-API für MongoDB in Oracle Database-API für MongoDB.

MongoDB-API aktivieren

Sie können die MongoDB-API für eine Autonomous Database über die OCI-Konsole oder manuell mit Oracle REST Data Services (ORDS) aktivieren.

Um die MongoDB-API mit einer Autonomous Database zu verwenden, müssen Sie vom Kunden verwaltete Oracle REST Data Services (ORDS) separat installieren und konfigurieren. Die ORDS-Version muss 22.3 oder höher sein. Die Architekturkonzepte dieser API finden Sie unter Oracle API for MongoDB Support in der Dokumentation Oracle REST Data Services Installation and Configuration Guide.

So aktivieren Sie die MongoDB-API über die OCI-Konsole:
  • Wählen Sie auf der Seite Autonomous Database Details die Registerkarte Toolkonfiguration aus.
  • Klicken Sie auf Toolkonfiguration bearbeiten.
  • Wählen Sie in der Zeile MongoDB API in der Spalte Tool aktivieren die Option Aktiviert aus.
  • Klicken Sie auf Übernehmen.
Der Lebenszyklusstatus ändert sich in Aktualisieren, bis MongoDB aktiviert ist.

Sie können die MongoDB-API auch aktivieren, wenn Sie eine Instanz bereitstellen oder klonen, indem Sie Erweiterte Optionen anzeigen auswählen und die Registerkarte Extras auswählen.

So aktivieren Sie MongoDB manuell:

Eine Demonstration der oben genannten Schritte finden Sie unter Getting Started in Oracle REST Data Services Installation and Configuration Guide.

MongoDB-Anwendungen verbinden

Nachdem die MongoDB-API aktiviert wurde, können Sie einen MongoDB-Benutzer erstellen und eine Verbindung zu Autonomous Database mit der zugehörigen Verbindungszeichenfolge herstellen.

Mit der API-Verbindungszeichenfolge MongoDB können Sie Ihre Daten mit der MongoDB Shell (einem Befehlszeilenutility) verbinden und abfragen.

Sie können die zugehörige Verbindungszeichenfolge aus der Oracle Cloud Infrastructure-Konsole abrufen. So rufen Sie die API-Verbindungszeichenfolge MongoDB ab:
  1. Wählen Sie auf der Seite Autonomous Database Details die Registerkarte Toolkonfiguration aus.
  2. Klicken Sie in der Zeile MongoDB API unter Zugriffs-URL auf Kopieren.

Wenn Sie die MongoDB-API in Autonomous Database auf Exadata Cloud@Customer verwenden, muss Ihr Netzwerk-/DNS-Team sicherstellen, dass jeder Hostname der MongoDB-Verbindungszeichenfolge in dem SCAN des Clusters aufgelöst wird. Andernfalls können MongoDB-Clients keine Verbindung zur Datenbank herstellen. Sie können entweder Verbindungen zu allen Autonomous Databases im Cluster mit einem Platzhalter-DNS-Datensatz zulassen oder eine bestimmte Autonomous Database zulassen:

MongoDB-Verbindungen testen

Autonomous Database-Testbenutzer für MongoDB erstellen

Sie können einen Testbenutzer oder einen ähnlich authentifizierten Benutzer zu Testzwecken erstellen.

  1. Öffnen Sie die OCI-Konsole für Ihre Autonomous Database.
  2. Klicken Sie auf Datenbankaktionen.
  3. Klicken Sie im Database Actions-Launchpad auf Administration > Datenbankbenutzer.
  4. Klicken Sie auf der Seite "Database Users" auf + Create User.
  5. Geben Sie einen Benutzernamen und ein Passwort für den Testbenutzer ein. Klicken Sie auf Webzugriff, und legen Sie die Quota für Tablespace DATA fest.
  6. Klicken Sie auf die Registerkarte Erteilte Rollen.
  7. Wählen Sie zusätzlich zu den Standardrollen die Rolle SODA_APP für den Benutzer aus, und fügen Sie sie hinzu.
  8. Klicken Sie auf Benutzer erstellen.

Verbindung mit der Befehlszeile testen

  1. Melden Sie sich als Testbenutzer an. Befolgen Sie die Schritte im vorherigen Beispiel für Anweisungen.
    $ 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
    > 

    Hinweis:

    Verwenden Sie die prozentuale URI-Kodierung, um reservierte Zeichen in Ihrer Verbindungszeichenfolge-URI zu ersetzen – insbesondere Zeichen in Ihrem Benutzernamen und Kennwort. Dies sind die reservierten Zeichen und ihre Prozentcodierungen:

    ! # $ % & ' ( ) * +
    %21 %23 %24 %25 %26 %27 %28 %29 %2A %2B
    , / : ; = ? @ [ ]
    %2C %2F %3A %3B %3D %3F %40 %5B %5D

    Beispiel: Wenn Ihr Benutzername RUTH lautet und Ihr Kennwort @least1/2#? lautet, könnte die Verbindungszeichenfolge MongoDB für Server <server> wie folgt aussehen:

    'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'

    Abhängig von den Tools oder Treibern, die Sie verwenden, können Sie einen Benutzernamen und ein Passwort als separate Parameter anstelle einer URI-Verbindungszeichenfolge angeben. In diesem Fall müssen Sie wahrscheinlich keine reservierten Zeichen codieren, die sie enthalten.

    Siehe auch:

  2. Erstellen Sie eine Sammlung, und fügen Sie Dokumente in Ihre Sammlung ein.
    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. Fragen Sie die Collection mit einem SQL-Client ab, wie Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;

Verbindung mit einer Node.js-Anwendung testen

  1. Laden Sie Node.js herunter. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.

    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Extrahieren Sie den Inhalt des Node,js-Archivs. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.

    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. Konfigurieren Sie die Umgebungsvariable PATH. Wenn Sie Node.js für Ihre Umgebung bereits heruntergeladen oder installiert haben, können Sie diesen Schritt überspringen.

    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Testen Sie Ihre Verbindung mit einem Javascript-Beispiel.

    1. Neues Verzeichnis erstellen.

      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Installieren Sie die Mangodb-Abhängigkeit.

      $ npm install mongodb
    3. Erstellen Sie eine JavaScript-Anwendung namens connect.js.

      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);
      

      Hinweis:

      Verwenden Sie die prozentuale URI-Kodierung, um reservierte Zeichen in Ihrer Verbindungszeichenfolge-URI zu ersetzen – insbesondere Zeichen in Ihrem Benutzernamen und Kennwort. Dies sind die reservierten Zeichen und ihre Prozentcodierungen:

      ! # $ % & ' ( ) * +
      %21 %23 %24 %25 %26 %27 %28 %29 %2A %2B
      , / : ; = ? @ [ ]
      %2C %2F %3A %3B %3D %3F %40 %5B %5D

      Beispiel: Wenn Ihr Benutzername RUTH lautet und Ihr Kennwort @least1/2#? lautet, könnte die Verbindungszeichenfolge MongoDB für Server <server> wie folgt aussehen:

      'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'

      Abhängig von den Tools oder Treibern, die Sie verwenden, können Sie einen Benutzernamen und ein Passwort als separate Parameter anstelle einer URI-Verbindungszeichenfolge angeben. In diesem Fall müssen Sie wahrscheinlich keine reservierten Zeichen codieren, die sie enthalten.

      Siehe auch:

    4. Führen Sie das Beispiel aus. Die Ausgabe sollte der folgenden ähneln.

      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }