Uso di Oracle Database API per MongoDB

Oracle Database API for MongoDB consente di connettersi a Oracle Autonomous Database utilizzando i driver e gli strumenti del linguaggio MongoDB.

Oracle Database API for MongoDB sfrutta le funzionalità di database convergente di un Autonomous Database per gestire più tipi di dati, inclusi i dati JSON, all'interno di un singolo database. Ad esempio, queste funzionalità di database convergente consentono di utilizzare SQL per eseguire query o aggiornare i dati JSON.

Nota

MongoDB richiede di configurare l'accesso di rete per l'uso delle ACL o di definire un endpoint privato per l'istanza di Autonomous Database.

Per ulteriori informazioni, consulta Oracle Database API for MongoDB.

Per ulteriori informazioni, consulta Informazioni su Autonomous JSON Database.

Per ulteriori informazioni, consulta Informazioni sui tipi di carico di lavoro di Autonomous Database.

Temi

Configurare l'accesso per MongoDB e abilitare MongoDB

Oracle Database API for MongoDB ti consente di utilizzare Oracle Autonomous Database come data store.

Per utilizzare l'API MongoDB è possibile creare e configurare un nuovo Autonomous Database oppure modificare la configurazione di un Autonomous Database esistente.

Nota

MongoDB richiede di configurare l'accesso di rete per l'uso delle ACL o di definire un endpoint privato per l'istanza di Autonomous Database. Oltre a configurare l'accesso alla rete, è necessario abilitare l'API MongoDB nell'istanza di Autonomous Database.

Configura accesso per MongoDB

Per utilizzare l'API MongoDB, è possibile creare e configurare un nuovo Autonomous Database o modificare la configurazione di un Autonomous Database esistente configurando le ACL o definendo un endpoint privato.

Configurare un nuovo Autonomous Database per MongoDB

Attenersi alla procedura descritta in Esegui provisioning o copia di un Autonomous Database, fino al punto in cui si seleziona il tipo di accesso alla rete.

Segue la descrizione di adb_network_access_acl_provision.png
Descrizione dell'immagine adb_network_access_acl_provision.png

A questo punto, per utilizzare Oracle Database API per MongoDB, configurare l'accesso sicuro selezionando e configurando uno dei seguenti tipi di accesso alla rete:

Configurare un Autonomous Database esistente per MongoDB

Aprire la console di Oracle Cloud Infrastructure per l'istanza di Autonomous Database.



Nota

Per utilizzare Oracle Database API per MongoDB è necessario configurare la rete e il tipo di accesso deve essere uno dei seguenti: Solo accesso sicuro da IP e VCN consentiti o Solo accesso endpoint privato.

Impostazione della lista di controllo dell'accesso (ACL)

Per ulteriori informazioni, vedere Configura liste di controllo dell'accesso per un'istanza di Autonomous Database esistente.

Per configurare la tua ACL per un indirizzo IP, dovrai ottenere l'indirizzo IP pubblico. Esistono diversi modi per mostrare il tuo indirizzo IP pubblico:
  • Nell'area di scelta dell'accesso di rete, fare clic su Aggiungi indirizzo IP. L'indirizzo IP viene copiato nel campo Valori.

  • Dopo aver disattivato qualsiasi VPN, utilizza il sito Web WhatIsMyIP.
  • Dopo aver disattivato qualsiasi VPN, utilizza il comando curl: curl -s https://ifconfig.me.
Nota

Gli indirizzi IP pubblici possono cambiare. Qualsiasi modifica all'indirizzo IP pubblico richiederà una modifica nell'ACL. Se non riesci ad accedere al tuo database, la tua ACL dovrebbe essere qualcosa che controlli.

Tipi e casi d'uso delle ACL

Tipo ACL caso d'uso Commenta
Indirizzo IP Computer portatili di sviluppo locale che condividono lo stesso indirizzo IP pubblico Il modo più semplice per iniziare. Qualsiasi laptop connesso su questa LAN avrà accesso al database con le credenziali del database.
blocco CIDR Notebook per lo sviluppo locale Utilizzo della notazione IPv4/32
Indirizzi IP separati da virgole Piccolo numero di laptop di sviluppo locale connessi su LAN distinte (con indirizzi IP pubblici distinti) Può essere noioso da gestire con oltre 10 laptop.
blocco CIDR Computer portatili di sviluppo locale connessi sulla stessa sottorete esposti a Internet (ogni computer portatile ha il proprio indirizzo IP pubblico) Affidati alla notazione del blocco CIDR. Per ulteriori informazioni, visita la calcolatrice qui. Esempio: 89.84.109.0/24 fornisce 256 possibili indirizzi IP da 89.84.109.0 a 89.84.109.255
VCN con blocco CIDR Per eseguire test, produzione o pipeline CI/CD in hosting su OCI con istanze VCN e di computazione proprie Assegnare il compartimento OCI per tipo di ambiente.
Combinazione di indirizzo IP e VCN con il blocco CIDR Laptop di sviluppo locale che accede a un Autonomous Database di test con connessioni dall'ambiente di test o dalla pipeline CI/CD Un'opzione di configurazione comune per il lavoro di sviluppo in corso.

Abilita l'API MongoDB su Autonomous Database

Dopo aver configurato l'accesso di rete per l'istanza di Autonomous Database, abilitare l'API MongDB.

Per abilitare l'API MongoDB per un'istanza esistente:

  1. Nella pagina dei dettagli di Autonomous Database, selezionare la scheda Configurazione degli strumenti.
  2. Fare clic su Modifica configurazione strumento.
  3. Nella riga dell'API MongoDB selezionare Abilita strumento nella colonna per visualizzare Abilitato.
  4. Fare clic su Applica.

Lo stato del ciclo di vita passa all'aggiornamento finché non viene abilitato MongoDB.

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

Per ulteriori informazioni, consulta la sezione relativa agli strumenti integrati per la gestione di Autonomous Database.

Gestione utenti per MongoDB

Oracle Database API for MongoDB ti consente di utilizzare Oracle Autonomous Database come data store. Se si desidera o è necessario utilizzare un Autonomous Database esistente per questo scopo, ecco il workflow.

Oracle Database API for MongoDB abilita il mapping degli oggetti di Autonomous Database agli oggetti MongoDB come indicato di seguito.

Oggetto MongoDB Oggetto Oracle Autonomous Database
database schema
raccolta tabella
documento documento (in una colonna)

Ad esempio, è possibile creare una raccolta utilizzando Oracle Database API per MongoDB come indicato di seguito.

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

Nello schema SCOTT viene creata una tabella denominata FRUIT.

Quando ti connetti all'API di Oracle Database per MongoDB, esegui l'autenticazione utilizzando un nome utente e una password di Autonomous Database. Questa connessione autenticata accede quindi alle raccolte nello schema corrispondente. Questo utente deve soddisfare i seguenti requisiti:

Nota

Il ruolo DWROLE in Autonomous Database contiene, tra gli altri, questi ruoli.

L'accesso agli schemi non concessi all'utente è vietato. Ad esempio, l'utente SCOTT può accedere solo alle raccolte nello schema SCOTT. Esiste un'eccezione. Se l'utente autenticato dispone dei privilegi di Autonomous Database CREATE USER, ALTER USER e DROP USER, tale utente può accedere a qualsiasi schema abilitato per ORDS.

Inoltre, un utente con questi privilegi può creare in modo implicito schemi. Cioè, quando l'utente crea una raccolta in un database che non esiste, lo schema verrà creato automaticamente. Per ulteriori informazioni, consulta Oracle Database API for MongoDB.

Creare un utente di Autonomous Database di test per MongoDB

I passi successivi utilizzano Database Actions per creare un utente di test con i ruoli appropriati. È inoltre possibile utilizzare Database Actions SQL o altre utility della riga di comando SQL per eseguire direttamente le istruzioni SQL. Per ulteriori informazioni, vedere Create Users on Autonomous Database - Connecting with a Client Tool.
  1. Apri la console di Oracle Cloud Infrastructure per il tuo Autonomous Database.
  2. Selezionare Azioni database.
  3. Nel Launchpad Database Actions selezionare Amministrazione > Utenti del database.
  4. Selezionare + Crea utente nella pagina Utenti database.
  5. Immettere un Nome utente e una Password per l'utente di test. Selezionare Accesso Web e impostare la quota sui dati della tablespace.
  6. Selezionare la scheda Ruoli concessi.
  7. Oltre ai ruoli predefiniti, selezionare e aggiungere il ruolo SODA_APP per l'utente.
  8. Selezionare il pulsante Crea utente.
È possibile utilizzare questo utente, o un utente con autenticazione simile, a scopo di test. Per ulteriori informazioni, vedere Test della connessione mediante la riga di comando.

Connettere le applicazioni MongoDB ad Autonomous Database

La connessione dell'applicazione MongoDB ad Autonomous Database include diversi passi, a seconda delle esigenze.

Recupera la stringa di connessione MongoDB di Autonomous Database

Puoi recuperare la stringa di connessione API MongoDB dalla console di Oracle Cloud Infrastructure.

Una volta ottenuta la stringa di connessione API MongoDB, è possibile utilizzare la shell MongoDB, una utility della riga di comando, per connettere ed eseguire query sui dati.

Prima è necessario configurare l'accesso alla rete e abilitare l'API MongoDB. Per ulteriori informazioni, vedere Configure Access for MongoDB.

Per recuperare la stringa di connessione API MongoDB:

  1. Nella pagina dei dettagli di Autonomous Database, selezionare la scheda Configurazione degli strumenti.
  2. Nella riga dell'API MongoDB, in URL di accesso fare clic su Copia.
Recupera la stringa di connessione a Autonomous Database da Database Actions

Utilizzare la MongoDB Shell, una utility della riga di comando utilizzata per connettere ed eseguire query sui dati.
  1. È possibile recuperare la stringa di connessione per l'istanza di Autonomous Database con Database Actions.

    Per ulteriori informazioni, vedere Accedere alle azioni del database come ADMIN.

  2. Nel Launchpad di Database Actions, in Servizi correlati, fare clic su Oracle Database API for MongoDB.
  3. Nella pagina Oracle Database API for MongoDB fare clic su Copia.

Test della connessione mediante la riga di comando

  1. Eseguire il login come utente di test. Per ulteriori informazioni, vedere Creare un utente di Autonomous Database di test per MongoDB.
    $ 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 URI per sostituire qualsiasi carattere riservato nell'URI della stringa di connessione, in particolare i caratteri nel nome utente e nella password. Questi sono i caratteri riservati e le relative codifiche percentuali:

    ! # $ % & ' ( ) * +
    %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, è possibile fornire un nome utente e una password come parametri separati, anziché come parte di una stringa di connessione URI. In tal caso, probabilmente non sarà necessario codificare i caratteri riservati che contengono.

    Vedere anche:

  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 come 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. Scarica Node.js. Se Node.js è già stato scaricato o installato 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 Node.js è già stato scaricato o installato 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 Node.js è già stato scaricato o installato 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 URI per sostituire qualsiasi carattere riservato nell'URI della stringa di connessione, in particolare i caratteri nel nome utente e nella password. Questi sono i caratteri riservati e le relative codifiche percentuali:

      ! # $ % & ' ( ) * +
      %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, è possibile fornire un nome utente e una password come parametri separati, anziché come parte di una stringa di connessione URI. In tal caso, probabilmente non sarà necessario codificare i caratteri riservati che contengono.

      Vedere anche:

    4. Esegui l'esempio. L'output deve essere simile al seguente.
      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }