Uso de la API de Oracle Database para MongoDB

Oracle Database API for MongoDB permite conectarse a Oracle Autonomous Database mediante controladores y herramientas de lenguaje MongoDB.

Oracle Database API for MongoDB aprovecha las capacidades de base de datos convergente de una instancia de Autonomous Database para gestionar varios tipos de datos, incluidos los datos JSON, en una sola base de datos. Por ejemplo, estas capacidades de base de datos convergente le permiten utilizar SQL para consultar o actualizar datos JSON.

Nota

MongoDB requiere que configure el acceso de red para utilizar las ACL o que defina un punto final privado para la instancia de Autonomous Database.

Consulte Oracle Database API for MongoDB para obtener más información.

Consulte Acerca de Autonomous JSON Database para obtener más información.

Consulte Acerca de Autonomous Database Workload Types para obtener más información.

Temas

Configurar el acceso para MongoDB y activar MongoDB

Oracle Database API for MongoDB permite utilizar una instancia de Oracle Autonomous Database como almacén de datos.

Para utilizar la API MongoDB, puede crear y configurar una nueva instancia de Autonomous Database o modificar la configuración de una instancia de Autonomous Database existente.

Nota

MongoDB requiere que configure el acceso de red para utilizar las ACL o que defina un punto final privado para la instancia de Autonomous Database. Además de configurar el acceso de red, debe activar la API MongoDB en la instancia de Autonomous Database.

Configurar acceso para MongoDB

Para utilizar la API MongoDB, puede crear y configurar una nueva instancia de Autonomous Database o modificar la configuración de una instancia de Autonomous Database existente mediante la configuración de ACL o la definición de un punto final privado.

Configuración de una nueva instancia de Autonomous Database para MongoDB

Siga los pasos de Aprovisionamiento o clonación de una instancia de Autonomous Database, hasta el punto en el que seleccione el tipo de acceso de red.

A continuación se muestra la descripción de adb_network_access_acl_provision.png
Descripción de la ilustración adb_network_access_acl_provision.png

En este punto, para utilizar Oracle Database API for MongoDB, configure el acceso seguro seleccionando y configurando uno de estos tipos de acceso de red:

Configuración de una instancia de Autonomous Database existente para MongoDB

Abra la consola de Oracle Cloud Infrastructure para la instancia de Autonomous Database.



Nota

Para utilizar Oracle Database API for MongoDB, la red debe estar configurada y el tipo de acceso debe ser: Acceso seguro solo desde IP permitidas y VCN o Acceso solo a punto final privado.

Definición de Lista de Control de Acceso (ACL)

Consulte Configuración de listas de control de acceso para una instancia de Autonomous Database existente para obtener más información.

Para configurar la ACL para una dirección IP, deberá obtener la dirección IP pública. Existen varias formas de mostrar la dirección IP pública:
  • En el área de acceso de red de selección, haga clic en Agregar mi dirección IP. Esto copia la dirección IP en el campo Valores.

  • Después de desactivar cualquier VPN, utilice el sitio web WhatIsMyIP.
  • Después de desactivar cualquier VPN, utilice el comando curl: curl -s https://ifconfig.me.
Nota

Las direcciones IP públicas pueden cambiar. Cualquier cambio en la dirección IP pública requerirá un cambio en la ACL. Si no puede acceder a la base de datos, la ACL debe ser algo que compruebe.

Tipos y casos de uso de ACL

Tipo de ACL Caso de uso Comentario
Dirección IP Portátiles de desarrollo local que comparten la misma dirección IP pública La forma más sencilla de empezar. Cualquier ordenador portátil conectado en esta LAN tendrá acceso a la base de datos con las credenciales de la base de datos.
Bloque de CIDR Portátil de desarrollo local Uso de la notación IPv4/32
Direcciones IP separadas por comas Pequeña cantidad de portátiles de desarrollo local conectados en LAN distintas (que tienen direcciones IP públicas distintas) Puede ser tedioso manejar con más de 10 computadoras portátiles.
Bloque de CIDR Los portátiles de desarrollo local conectados en la misma subred expuestos a Internet (cada portátil tiene su propia dirección IP pública) Confíe en la notación de bloque CIDR. Consulte calculadora aquí para obtener más información. Ejemplo: 89.84.109.0/24 proporciona 256 direcciones IP posibles de 89.84.109.0 a 89.84.109.255
VCN con bloque de CIDR Para el pipeline de pruebas, producción o CI/CD alojado en OCI que tenga sus propias instancias informáticas y de VCN Asigne un compartimento de OCI por tipo de entorno.
Combinación de dirección IP y VCN con bloque CIDR Equipo portátil de desarrollo local que accede a una instancia de prueba de Autonomous Database con conexiones desde el entorno de prueba o el pipeline de integración y despliegue continuos Una opción de configuración común para el trabajo de desarrollo continuo.

Activación de la API MongoDB en Autonomous Database

Después de configurar el acceso de red para la instancia de Autonomous Database, active la API MongDB.

Para activar la API MongoDB para una instancia existente:

  1. En la página de detalles de Autonomous Database, seleccione el separador Configuración de herramientas.
  2. Haga clic en Editar configuración de herramienta.
  3. En la fila de API MongoDB, seleccione en la columna Activar herramienta para mostrar Activado.
  4. Haga clic en Aplicar.

El estado del ciclo de vida cambia a actualización hasta que MongoDB esté activado.

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

Consulte Gestión de herramientas incorporadas de Autonomous Database para obtener más información.

Gestión de usuarios para MongoDB

Oracle Database API for MongoDB permite utilizar una instancia de Oracle Autonomous Database como almacén de datos. Si desea o necesita utilizar una instancia de Autonomous Database existente para este fin, este es el flujo de trabajo.

Oracle Database API for MongoDB permite la asignación de objetos de Autonomous Database a objetos MongoDB de la siguiente manera:

Objeto MongoDB Objeto de Oracle Autonomous Database
base de datos esquema
recopilación tabla
documento documento (en una columna)

Por ejemplo, puede crear una recopilación mediante Oracle Database API for MongoDB de la siguiente forma:

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

En el esquema SCOTT, se crea una tabla denominada FRUIT.

Al conectarse a Oracle Database API for MongoDB, se autentica mediante un nombre de usuario y una contraseña de Autonomous Database. Esta conexión autenticada accede a las recopilaciones dentro del esquema correspondiente. Este usuario debe cumplir los siguientes requisitos:

Nota

El rol DWROLE de la instancia de Autonomous Database contiene estos roles, entre otros.

No se permite el acceso a los esquemas que no se hayan otorgado al usuario. Por ejemplo, el usuario SCOTT solo puede acceder a recopilaciones en el esquema SCOTT. Existe una excepción. Si el usuario autenticado tiene los privilegios de Autonomous Database CREATE USER, ALTER USER y DROP USER, ese usuario puede acceder a cualquier esquema activado para ORDS.

Además, un usuario con estos privilegios puede crear esquemas de forma implícita. Es decir, cuando el usuario crea una recopilación en una base de datos que no existe, el esquema se creará automáticamente. Consulte Oracle Database API for MongoDB para obtener más información.

Creación de un usuario de prueba de Autonomous Database para MongoDB

Los pasos siguientes utilizan Database Actions para crear un usuario de prueba con los roles adecuados. También puede utilizar SQL de Database Actions u otras utilidades de línea de comandos SQL para ejecutar las sentencias SQL directamente. Consulte Creación de usuarios en Autonomous Database: conexión con una herramienta de cliente para obtener más información.
  1. Abra la consola de Oracle Cloud Infrastructure para su instancia de Autonomous Database.
  2. Seleccione Database Actions.
  3. En la pantalla de inicio Database Actions, seleccione Administración > Usuarios de base de datos.
  4. Seleccione + 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. Seleccione Acceso web y defina la cuota en DATA de tablespace.
  6. Seleccione el separador Roles otorgados.
  7. Además de los roles por defecto, seleccione y agregue el rol SODA_APP para el usuario.
  8. Seleccione el botón Crear usuario.
Puede utilizar este usuario, o un usuario autenticado de forma similar, para fines de prueba. Consulte Prueba de conexión mediante la línea de comandos para obtener más información.

Conexión de aplicaciones MongoDB a Autonomous Database

Recuperación de la cadena de conexión MongoDB de Autonomous Database

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

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

En primer lugar, debe configurar el acceso de red y activar la API MongoDB. Consulte Configuración del acceso para MongoDB para obtener más información.

Para recuperar la cadena de conexión de la API MongoDB:

  1. En la página de detalles de Autonomous Database, seleccione el separador Configuración de herramientas.
  2. En la fila de API MongoDB, en URL de acceso, haga clic en Copiar.
Recuperación de la cadena de conexión de Autonomous Database desde Database Actions

Utilice el shell MongoDB, que es una utilidad de línea de comandos que se utiliza para conectar y consultar los datos.
  1. Puede recuperar la cadena de conexión para la instancia de Autonomous Database con Database Actions.

    Consulte Acceso a Database Actions como ADMIN para obtener más información.

  2. En la pantalla de inicio de Database Actions, en Servicios relacionados, haga clic en Oracle Database API for MongoDB.
  3. En la página Oracle Database API for MongoDB, haga clic en Copiar.

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

  1. Conéctese como usuario de prueba. Consulte Creación de un usuario de prueba de Autonomous Database para MongoDB para obtener más información.
    $ 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

    Utilice la codificación porcentual de URI para reemplazar cualquier carácter reservado en su URI de cadena de conexión, en particular, los caracteres en su nombre de usuario y contraseña. Estos son los caracteres reservados y sus codificaciones porcentuales:

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

    Por ejemplo, si el nombre de usuario es RUTH y la 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.

    Consulte también lo siguiente:

  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;
    Descripción de database_actions_sql_for_mongodb_use.png a continuación
    Descripción de la ilustración database_actions_sql_for_mongodb_use.png

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

  1. Descargue 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.
    1. Crear Nuevo Directorio.
      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Instale la dependencia de mongodb.
      $ npm install mongodb
    3. 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);
      
      Nota

      Utilice la codificación porcentual de URI para reemplazar cualquier carácter reservado en su URI de cadena de conexión, en particular, los caracteres en su nombre de usuario y contraseña. Estos son los caracteres reservados y sus codificaciones porcentuales:

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

      Por ejemplo, si el nombre de usuario es RUTH y la 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.

      Consulte también lo siguiente:

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