Utilizza l'API MongoDB con Oracle Autonomous Database on Dedicated Exadata Infrastructure

Oracle Database API for MongoDB converte il protocollo wire MongoDB in istruzioni SQL eseguite da Oracle Database. Consente agli sviluppatori che dispongono di set di competenze MongoDB di scrivere applicazioni di archivio documenti JSON per Oracle Database che utilizzano driver e strumenti che comprendono il protocollo MongoDB. Per una panoramica dettagliata di questa API, consulta la panoramica di Oracle Database API for MongoDB in Oracle Database API for MongoDB.

Abilita API MongoDB

Puoi abilitare l'API MongoDB per un Autonomous Database dalla console OCI o manualmente utilizzando Oracle REST Data Services (ORDS).

Per utilizzare l'API MongoDB con un Autonomous Database, è necessario installare e configurare Oracle REST Data Services (ORDS) gestito dal cliente separatamente e la versione di ORDS deve essere la 22.3 o successiva. Per informazioni sui concetti architettonici di questa API, vedere Oracle API for MongoDB Support in Oracle REST Data Services Installation and Configuration Guide.

Per abilitare l'API MongoDB dalla console OCI, effettuare le operazioni riportate di seguito.
  • Nella pagina Dettagli di Autonomous Database selezionare la scheda Configurazione degli strumenti.
  • Fare clic su Modifica configurazione strumento.
  • Nella riga API MongoDB, selezionare la colonna Abilita strumento per visualizzare Abilitato.
  • Fare clic su Applica.
Lo stato del ciclo di vita viene modificato in aggiornamento fino a quando MongoDB non è abilitato.

È inoltre possibile abilitare l'API MongoDB quando si esegue il provisioning o si duplica un'istanza selezionando Mostra opzioni avanzate e selezionando la scheda Strumenti.

Per abilitare manualmente MongoDB:

Per una dimostrazione della procedura descritta in precedenza, fare riferimento alla guida introduttiva in Oracle REST Data Services Installation and Configuration Guide.

Connetti applicazioni MongoDB

Dopo aver abilitato l'API MongoDB, è possibile creare un utente MongoDB e connettersi ad Autonomous Database con la relativa stringa di connessione.

Con la stringa di connessione all'API MongoDB è possibile utilizzare la MongoDB Shell, una utility della riga di comando, per connettersi ed eseguire query sui dati.

È possibile recuperare la relativa stringa di connessione dalla console di Oracle Cloud Infrastructure. Per recuperare la stringa di connessione all'API MongoDB:
  1. Nella pagina Dettagli di Autonomous Database selezionare la scheda Configurazione degli strumenti.
  2. Nella riga API MongoDB, in URL di accesso fare clic su Copia.

Se si utilizza l'API MongoDB in Autonomous Database in Exadata Cloud@Customer, il team di rete/DNS deve assicurarsi che qualsiasi nome host della stringa di connessione MongoDB venga risolto nello SCAN del cluster. In caso contrario, i client MongoDB non saranno in grado di connettersi al database. Puoi consentire le connessioni a tutti gli Autonomous Database all'interno del cluster utilizzando il record DNS con caratteri jolly o consentire un Autonomous Database specifico:

Test delle connessioni MongoDB

Creare un utente di test di Autonomous Database per MongoDB

È possibile creare un utente di prova o un utente autenticato in modo simile a scopo di test.

  1. Aprire OCI Console per Autonomous Database.
  2. Fare clic su Azioni database.
  3. Nel Launchpad Azioni database fare clic su Amministrazione > Utenti database.
  4. Fare clic su + Crea utente nella pagina Utenti database.
  5. Immettere un Nome utente e una Password per l'utente di test. Fare clic su Accesso Web e impostare la quota sulla tablespace DATA.
  6. Fare clic sulla scheda Ruoli concessi.
  7. Oltre ai ruoli predefiniti, selezionare e aggiungere il ruolo SODA_APP per l'utente.
  8. Fare clic su Crea utente,

Test della connessione mediante la riga di comando

  1. Eseguire il login come utente di test. Seguire le istruzioni riportate nell'esempio precedente.
    $ 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
    > 

    Nota

    Utilizzare la codifica percentuale dell'URI per sostituire eventuali caratteri riservati nell'URI della stringa di connessione, in particolare i caratteri nel nome utente e nella password. Questi sono i caratteri riservati e la loro percentuale di codifiche:

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

    Ad esempio, se il nome utente è RUTH e la password è @least1/2#?, la stringa di connessione MongoDB al server <server> potrebbe essere simile alla seguente:

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

    A seconda degli strumenti o dei driver utilizzati, potrebbe essere possibile fornire un nome utente e una password come parametri separati, anziché come parte di una stringa di connessione URI. In questo caso probabilmente non sarà necessario codificare i caratteri riservati che contengono.

    Fare riferimento anche a quanto riportato di seguito.

  2. Creare una raccolta e inserire documenti nella raccolta.
    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. Eseguire una query sulla raccolta utilizzando un client SQL, ad esempio Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;

Test della connessione mediante un'applicazione Node.js

  1. Scaricare Node.js. Se è già stato scaricato o installato Node.js per l'ambiente in uso, è possibile saltare questo passaggio.

    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Estrarre il contenuto dell'archivio Node,js. Se è già stato scaricato o installato Node.js per l'ambiente in uso, è possibile saltare questo passaggio.

    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. Configurare la variabile di ambiente PATH. Se è già stato scaricato o installato Node.js per l'ambiente in uso, è possibile saltare questo passaggio.

    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Prova la tua connessione con un esempio di Javascript.

    1. Crea una nuova directory.

      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Installare la dipendenza mongodb.

      $ npm install mongodb
    3. Creare un'applicazione JavaScript denominata 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);
      

      Nota

      Utilizzare la codifica percentuale dell'URI per sostituire eventuali caratteri riservati nell'URI della stringa di connessione, in particolare i caratteri nel nome utente e nella password. Questi sono i caratteri riservati e la loro percentuale di codifiche:

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

      Ad esempio, se il nome utente è RUTH e la password è @least1/2#?, la stringa di connessione MongoDB al server <server> potrebbe essere simile alla seguente:

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

      A seconda degli strumenti o dei driver utilizzati, potrebbe essere possibile fornire un nome utente e una password come parametri separati, anziché come parte di una stringa di connessione URI. In questo caso probabilmente non sarà necessario codificare i caratteri riservati che contengono.

      Fare riferimento anche a quanto riportato di seguito.

    4. Eseguire l'esempio. L'output dovrebbe essere simile al seguente.

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