Uso de la API de MongoDB con Oracle Autonomous AI Database en una infraestructura de Exadata dedicada

Oracle Database API for MongoDB convierte el protocolo de transferencia MongoDB en sentencias SQL que ejecuta Oracle Database. Permite a los desarrolladores que tienen conjuntos de habilidades de MongoDB escribir aplicaciones de almacén de documentos JSON para Oracle Database que utilizan controladores y herramientas que entienden el protocolo MongoDB. Consulte Visión general de Oracle Database API for MongoDB en Oracle Database API for MongoDB para obtener una visión general detallada de esta API.

Activar API de MongoDB

Puede activar la API MongoDB para una base de datos de IA autónoma desde la consola de OCI o manualmente mediante Oracle REST Data Services (ORDS).

Para utilizar la API de MongoDB con una base de datos de IA autónoma, debe instalar y configurar Oracle REST Data Services (ORDS) gestionado por el cliente por separado, y la versión de ORDS debe ser la 22.3 o posterior. Consulte Oracle API for MongoDB Support en la Guía de instalación y configuración de Oracle REST Data Services para conocer los conceptos arquitectónicos de esta API.

Para activar la API de MongoDB desde la consola de OCI:

También puede activar la API de MongoDB al aprovisionar o clonar una instancia seleccionando Mostrar opciones avanzadas y el separador Herramientas.

Para activar MongoDB manualmente:

Para ver una demostración de los pasos anteriores, consulte Introducción en la Guía de instalación y configuración de Oracle REST Data Services.

Conexión de aplicaciones MongoDB

Después de activar la API de MongoDB, puede crear un usuario de MongoDB y conectarse a la base de datos de IA autónoma con su cadena de conexión.

Con la cadena de conexión de la API de MongoDB puede utilizar el shell de MongoDB, que es una utilidad de línea de comandos, para conectar y consultar los datos.

Puede recuperar la cadena de conexión desde la consola de Oracle Cloud Infrastructure. Para recuperar la cadena de conexión de la API de MongoDB:

  1. En la página Detalles de Autonomous AI Database, seleccione el separador Configuración de herramientas.

  2. En la fila API de MongoDB, en URL de acceso, haga clic en Copiar.

Si utiliza la API de MongoDB en Autonomous AI Database en Exadata Cloud@Customer, su equipo de red/DNS debe asegurarse de que cualquier nombre de host de cadena de conexión de MongoDB se resuelva en el SCAN del cluster. Sin esto, los clientes MongoDB no podrán conectarse a la base de datos. Puede permitir conexiones a todas las bases de datos de IA autónomas del cluster mediante el registro de DNS comodín o permitir una base de datos de IA autónoma específica:

Probar conexiones MongoDB

Creación de un usuario de base de datos de IA autónoma de prueba para MongoDB

Puede crear un usuario de prueba o un usuario autenticado de forma similar para fines de prueba.

  1. Abra la consola de OCI para su base de datos de IA autónoma.

  2. Haga clic en Acciones de base de datos.

  3. En la pantalla de inicio de Database Actions, haga clic en Administration > Database Users.

  4. Haga clic en + Crear usuario en la página Usuarios de base de datos.

  5. Introduzca un nombre de usuario y una contraseña para el usuario de prueba. Haga clic en Acceso web y defina la Cuota en DATA de tablespace.

  6. Haga clic en el separador Granted Roles (Roles otorgados).

  7. Además de los roles por defecto, seleccione y agregue el rol SODA_APP para el usuario.

  8. Haga clic en Create User.

Prueba de conexión mediante la línea de comandos

  1. Conéctese como usuario de prueba. Siga los pasos del ejemplo anterior para obtener instrucciones.

     $ 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**
     >
    
  2. Cree una recopilación e inserte documentos en la recopilación.

       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. Consultar la recopilación mediante un cliente SQL como Database Actions.

    SELECT
        f.json_document.name,
        f.json_document.count,
        f.json_document.color
    FROM fruit f;
    

Prueba de conexión mediante una aplicación Node.js

  1. Descarga Node.js. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.

     $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
    
  2. Extraiga el contenido del archivo Node,js. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.

     $ tar -xf node-v14.17.5-linux-x64.tar.xz
    
  3. Configure la variable del entorno PATH. Si ya ha descargado o instalado Node.js para su entorno, puede omitir este paso.

     $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
    
  4. Pruebe su conexión con un ejemplo de Javascript.

    a. Crear Nuevo Directorio.

       $ mkdir autonomous_mongodb
       $ cd autonomous_mongodb
       $ npm init -y
    

    b. Instale la dependencia de mongodb.

       $ npm install mongodb
    

    c. Cree una aplicación JavaScript denominada 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);
    

d. Ejecute el ejemplo. La salida debe tener un aspecto similar al siguiente.

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

Porcentaje de codificación de URI para caracteres reservados

Utilice la codificación porcentual de URI para sustituir los caracteres reservados en el URI de la cadena de conexión, en particular, los caracteres del nombre de usuario y la contraseña. Estos son los caracteres reservados y sus codificaciones porcentuales:

Carácter reservado Porcentaje de codificación
! %21
# %23
$ %24
% %25
& %26
%27
( %28
) %29
* %2A
+ %2B
, %2C
/ %2F
: %3A
; %3B
= %3D
? %3F
@ %40
[ %5B
] %5D

Por ejemplo, si su nombre de usuario es RUTH y su contraseña es @least1/2#?, la cadena de conexión MongoDB al servidor <server> podría tener este aspecto:

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

Según las herramientas o los controladores que utilice, es posible que pueda proporcionar un nombre de usuario y una contraseña como parámetros independientes, en lugar de como parte de una cadena de conexión URI. En ese caso, es probable que no necesite codificar los caracteres reservados que contienen.

Contenido relacionado