Uso di Oracle Database API for 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 la configurazione dell'accesso di rete per l'uso delle ACL o la definizione di un endpoint privato per l'istanza di Autonomous Database.

Per ulteriori informazioni, vedere Oracle Database API for MongoDB.

Per ulteriori informazioni, vedere Informazioni su Autonomous JSON Database.

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

Argomenti

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, puoi creare e configurare un nuovo Autonomous Database o modificare la configurazione di un Autonomous Database esistente.

Nota

MongoDB richiede la configurazione dell'accesso di rete per l'uso delle ACL o la definizione di un endpoint privato per l'istanza di Autonomous Database. Oltre a configurare l'accesso di 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 for 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 for MongoDB, la rete deve essere configurata e il tipo di accesso deve essere: Accesso sicuro solo da IP e VCN consentiti o Solo accesso endpoint privato.

Impostazione delle liste di controllo dell'accesso (ACL)

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

Per configurare l'ACL per un indirizzo IP, sarà necessario ottenere l'indirizzo IP pubblico. Esistono diversi modi per mostrare il tuo indirizzo IP pubblico:
  • Nell'area di scelta dell'accesso alla rete fare clic su Aggiungi indirizzo IP personale. Copia l'indirizzo IP nel campo Valori.

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

Gli indirizzi IP pubblici possono cambiare. Qualsiasi modifica all'indirizzo IP pubblico richiederà una modifica all'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 Laptop 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 Laptop di sviluppo locale Utilizzo della notazione IPv4/32
Indirizzi IP separati da virgole Un piccolo numero di laptop di sviluppo locale connessi su LAN distinte (con indirizzi IP pubblici distinti) Può essere noioso da gestire con più di 10 laptop.
Blocco CIDR laptop di sviluppo locale connessi sulla stessa sottorete esposti a Internet (ogni laptop ha il proprio indirizzo IP pubblico) Affidati alla notazione di blocco CIDR. Per ulteriori informazioni, vedere calcolatrice qui. Esempio: 89.84.109.0/24 fornisce 256 indirizzi IP possibili da 89.84.109.0 a 89.84.109.255
VCN con blocco CIDR Per il test, la produzione o la 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 blocco CIDR Laptop di sviluppo locale che accede a un test Autonomous Database con connessioni dall'ambiente di test o dalla pipeline CI/CD Opzione di configurazione comune per il lavoro di sviluppo in corso.

Abilita API MongoDB in 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 strumento.
  2. Fare clic su Modifica configurazione strumento.
  3. Nella riga API MongoDB, selezionare la colonna Abilita strumento per visualizzare Abilitato.
  4. Fare clic su Applica.

Lo stato del ciclo di vita viene modificato in aggiornamento finché MongoDB non viene 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 ulteriori informazioni, consulta la sezione Gestisci strumenti integrati 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 utilizzare un Autonomous Database esistente per questo scopo, ecco il workflow.

Oracle Database API for MongoDB consente di eseguire il mapping degli oggetti 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 for MongoDB come indicato di seguito.

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

Nello schema SCOTT viene creata una tabella denominata FRUIT.

Quando ti connetti a Oracle Database API for MongoDB, esegui l'autenticazione utilizzando un nome utente e una password di Autonomous Database. Questa connessione autenticata accede quindi alle raccolte all'interno dello schema corrispondente. Questo utente deve soddisfare i requisiti indicati di seguito.

Nota

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

L'accesso agli schemi non concessi all'utente non è consentito. Ad esempio, l'utente SCOTT può accedere solo alle raccolte nello schema SCOTT. Un'eccezione. Se l'utente autenticato dispone dei privilegi 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 viene creato automaticamente. Per ulteriori informazioni, vedere Oracle Database API for MongoDB.

Creare un utente di test di Autonomous Database per MongoDB

I passi che seguono consentono di utilizzare 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 Crea utenti su Autonomous Database - Connessione con uno strumento client.
  1. Apri la console di Oracle Cloud Infrastructure per Autonomous Database.
  2. Selezionare Azioni database.
  3. Dal Launchpad Azioni database selezionare Amministrazione > Utenti database.
  4. Selezionare + Crea utente nella pagina Utenti database.
  5. Immettere un valore nei campi Nome utente e Password per l'utente di test. Selezionare Accesso Web e impostare la quota sulla tablespace DATA.
  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 autenticato in modo 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 dei requisiti.

Recupera la stringa di connessione MongoDB di Autonomous Database

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

Dopo aver ottenuto 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.

In primo luogo è necessario configurare l'accesso alla rete e abilitare l'API MongoDB. Per ulteriori informazioni, vedere Configura accesso per MongoDB.

Per recuperare la stringa di connessione all'API MongoDB:

  1. Nella pagina dei dettagli di Autonomous Database, selezionare la scheda Configurazione strumento.
  2. Nella riga API MongoDB, in URL di accesso fare clic su Copia.
Recupera la stringa di connessione di 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 Crea un utente di test di Autonomous Database 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 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.

    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, ad esempio Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;
    Segue la descrizione di database_actions_sql_for_mongodb_use.png
    Descrizione dell'immagine database_actions_sql_for_mongodb_use.png

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 d'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.

      Vedere anche:

    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' ]
      }