Usando a API do Oracle Database para MongoDB

A Oracle Database API for MongoDB possibilita a conexão com o Oracle Autonomous Database usando drivers e ferramentas de linguagem MongoDB.

O Oracle Database API for MongoDB utiliza os recursos de banco de dados convergente de um Autonomous Database para gerenciar vários tipos de dados, incluindo dados JSON, em um único banco de dados. Por exemplo, esses recursos de banco de dados convergente permitem que você use SQL para consultar ou atualizar dados JSON.

Observação

O MongoDB exige que você configure o acesso à rede para usar ACLs ou que defina um ponto final privado para a instância do Autonomous Database.

Consulte Oracle Database API for MongoDB para obter mais informações.

Consulte Sobre o Autonomous JSON Database para obter mais informações.

Consulte Sobre os Tipos de Carga de Trabalho Autonomous Database para obter mais informações.

Tópicos

Configurar o Acesso para MongoDB e Ativar MongoDB

A Oracle Database API for MongoDB permite que você use um Oracle Autonomous Database como armazenamento de dados.

Para usar a API MongoDB, você pode criar e configurar um novo Autonomous Database ou modificar a configuração de um Autonomous Database existente.

Observação

O MongoDB exige que você configure o acesso à rede para usar ACLs ou que defina um ponto final privado para a instância do Autonomous Database. Além de configurar o acesso à rede, você deve ativar a API MongoDB na instância do Autonomous Database.

Configurar Acesso para MongoDB

Para usar a API MongoDB, você pode criar e configurar um novo Autonomous Database ou modificar a configuração de um Autonomous Database existente configurando ACLs ou definindo um ponto final privado.

Configurar um Novo Autonomous Database para MongoDB

Siga as etapas em Provisionar ou Clonar um Autonomous Database, até o ponto em que você selecionar seu Tipo de Acesso à Rede.

Veja a seguir a descrição da ilustração adb_network_access_acl_provision.png
Descrição da ilustração adb_network_access_acl_provision.png

Neste ponto, para usar a Oracle Database API for MongoDB, configure o acesso seguro selecionando e configurando um destes tipos de acesso à rede:

Configurar um Autonomous Database Existente para MongoDB

Abra a Console do Oracle Cloud Infrastructure da sua instância do Autonomous Database.



Observação

Para usar a API do Oracle Database API for MongoDB, a Rede deve ser configurada e o Tipo de acesso deve ser: Acesso seguro somente de IPs e VCNs permitidos ou Somente acesso a ponto final privado.

Configuração da Lista de Controle de Acesso (ACL)

Consulte Configurar Listas de Controle de Acesso para uma Instância Existente do Autonomous Database para obter mais informações.

Para configurar sua ACL para um endereço IP, você precisará obter o endereço IP público. Existem várias maneiras de mostrar seu endereço IP público:
  • Na área de acesso à rede escolhida, clique em Adicionar meu endereço IP. Isso copia seu endereço IP para o campo Valores.

  • Depois de desativar qualquer VPN, use o WhatIsMyIP site.
  • Depois de desativar qualquer VPN, use o comando curl: curl -s https://ifconfig.me.
Observação

Os endereços IP públicos podem ser alterados. Qualquer alteração no seu endereço IP público exigirá uma alteração na ACL. Se você não conseguir acessar seu banco de dados, sua ACL deve ser algo que você verifica.

Tipos de ACLs e Casos de Uso

Tipo de ACL Caso de Uso Comentário
Endereço IP Laptops de desenvolvimento local que compartilham o mesmo endereço IP público A maneira mais fácil de começar. Qualquer laptop conectado a essa LAN terá acesso ao banco de dados com as credenciais do banco de dados.
Bloco CIDR Laptop de desenvolvimento local Usando a notação IPv4/32
Endereços IP separados por vírgulas Pequeno número de laptops de desenvolvimento local conectados em LANs distintas (com endereços IP públicos distintos) Pode ser tedioso para gerenciar com mais de 10 laptops.
Bloco CIDR Laptops de desenvolvimento local conectados na mesma sub-rede exposta à Internet (cada laptop tem seu próprio endereço IP público) Confie na notação do Bloco CIDR. Consulte calculadora aqui para obter mais informações. Exemplo: 89.84.109.0/24 fornece 256 endereços IP possíveis de 89.84.109.0 para 89.84.109.255
VCN com bloco CIDR Para teste, produção ou pipeline de CI/CD hospedado no OCI com suas próprias instâncias de VCN e Computação Designe o compartimento do OCI por tipo de ambiente.
Combinando Endereço IP e VCN com Bloco CIDR Laptop do desenvolvimento local que acessa um Autonomous Database de teste com conexões do ambiente de teste ou pipeline de CI/CD Uma opção de configuração comum para o trabalho de desenvolvimento contínuo.

Ativar a API MongoDB no Autonomous Database

Depois de configurar o acesso à rede para a instância do Autonomous Database, ative a API MongDB.

Para ativar a API MongoDB para uma instância existente:

  1. Na página de detalhes do Autonomous Database, selecione a guia Configuração da ferramenta.
  2. Clique em Editar configuração da ferramenta.
  3. Na linha da API MongoDB, selecione na coluna Ativar ferramenta para mostrar Ativado.
  4. Clique em Aplicar.

O Estado do ciclo de vida é alterado para atualização até que o MongoDB seja ativado.

Você também pode ativar a API MongoDB ao provisionar ou clonar uma instância selecionando Mostrar opções avançadas e selecionando a guia Ferramentas.

Consulte Gerenciar Ferramentas Incorporadas do Autonomous Database para obter mais informações.

Gerenciamento de Usuários para MongoDB

A Oracle Database API for MongoDB permite que você use um Oracle Autonomous Database como armazenamento de dados. Se você quiser ou precisar usar um Autonomous Database existente para essa finalidade, aqui está o workflow.

A Oracle Database API for MongoDB permite o mapeamento de objetos do Autonomous Database para objetos MongoDB da seguinte forma:

Objeto MongoDB Objeto do Oracle Autonomous Database
banco de dados esquema
coleção tabela
documento documento (em uma coluna)

Por exemplo, você pode criar uma coleção usando a Oracle Database API for MongoDB da seguinte forma:

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

Uma tabela chamada FRUIT é criada no esquema SCOTT.

Ao estabelecer conexão com a API do Oracle Database API for MongoDB, você se autentica usando um nome de usuário e uma senha do Autonomous Database. Essa conexão autenticada então acessa coleções dentro do esquema correspondente. Este usuário deve atender aos seguintes requisitos:

Observação

A atribuição DWROLE no Autonomous Database contém essas atribuições, entre outras.

É proibido o acesso a esquemas não concedidos ao usuário. Por exemplo, o usuário SCOTT só pode acessar coleções no esquema SCOTT. Há uma exceção. Se o usuário autenticado tiver os privilégios CREATE USER, ALTER USER e DROP USER do Autonomous Database, esse usuário poderá acessar qualquer esquema ativado para ORDS.

Além disso, um usuário com esses privilégios pode criar esquemas implicitamente. Ou seja, quando o usuário cria uma coleção em um banco de dados que não existe, o esquema é criado automaticamente. Consulte Oracle Database API for MongoDB para obter mais informações.

Criar um Usuário do Autonomous Database de Teste para MongoDB

As etapas a seguir usam o Database Actions para criar um usuário de teste com as atribuições adequadas. Você também pode usar o SQL do Database Actions ou outros utilitários de linha de comando SQL para executar as instruções SQL diretamente. Consulte Criar Usuários no Autonomous Database - Estabelecendo Conexão com uma Ferramenta Cliente para obter mais informações.
  1. Abra a Console do Oracle Cloud Infrastructure para seu Autonomous Database.
  2. Selecione Database Actions.
  3. No Database Actions Launchpad, selecione Administration > Database Users.
  4. Selecione + Criar Usuário na página Usuários do Banco de Dados.
  5. Informe um Nome do Usuário e uma Senha para o usuário de teste. Selecione Acesso à Web e defina a Cota no tablespace DATA.
  6. Selecione a guia Funções Concedidas.
  7. Além das atribuições padrão, selecione e adicione a atribuição SODA_APP para o usuário.
  8. Selecione o botão Criar Usuário.
Você pode usar esse usuário, ou um usuário autenticado da mesma forma, para fins de teste. Consulte Testar Conexão Usando a Linha de Comando para obter mais informações.

Conectar Aplicativos MongoDB ao Autonomous Database

A conexão do seu aplicativo MongoDB com o Autonomous Database inclui várias etapas, dependendo dos seus requisitos.

Recuperar a String de Conexão MongoDB do Autonomous Database

Você pode recuperar a string de conexão da API MongoDB na Console do Oracle Cloud Infrastructure.

Depois de obter a string de conexão da API MongoDB, você poderá usar o MongoDB Shell, que é um utilitário de linha de comando, para conectar e consultar seus dados.

Primeiro, configure o acesso à rede e ative a API MongoDB. Consulte Configurar Acesso para o MongoDB para obter mais informações.

Para recuperar a string de conexão da API MongoDB:

  1. Na página de detalhes do Autonomous Database, selecione a guia Configuração da ferramenta.
  2. Na linha da API MongoDB, em URL de Acesso, clique em Copiar.
Recuperar a String de Conexão do Autonomous Database no Database Actions

Use o MongoDB Shell, que é um utilitário de linha de comando usado para conectar e consultar seus dados.
  1. Você pode recuperar a string de conexão da sua instância do Autonomous Database com o Database Actions.

    Consulte Acessar o Database Actions como ADMIN para obter mais informações.

  2. No Database Actions Launchpad, em Related Services, clique em Oracle Database API for MongoDB.
  3. Na página Oracle Database API for MongoDB, clique em Copiar.

Testar Conexão Usando a Linha de Comando

  1. Faça log-in como o usuário de teste. Consulte Criar um Usuário do Autonomous Database de Teste para MongoDB para obter mais informações.
    $ 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
    > 
    Observação

    Use a codificação de porcentagem de URI para substituir quaisquer caracteres reservados em seu URI de string de conexão — em particular, caracteres em seu nome de usuário e senha. Estes são os caracteres reservados e sua porcentagem de codificação:

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

    Por exemplo, se o seu nome de usuário for RUTH e a sua senha for @least1/2#?, a string de conexão MongoDB com o servidor <server> poderá ter esta aparência:

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

    Dependendo das ferramentas ou drivers usados, você poderá fornecer um nome de usuário e uma senha como parâmetros separados, em vez de como parte de uma string de conexão URI. Nesse caso, você provavelmente não precisará codificar nenhum caractere reservado que ele contenha.

    Consulte também:

  2. Crie uma coleção e insira documentos em sua coleção.
    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. Consulte a coleta usando um cliente SQL, como o Database Actions.
    SELECT
         f.json_document.name, 
         f.json_document.count, 
         f.json_document.color
    FROM fruit f;
    Veja a seguir a descrição da ilustração database_actions_sql_for_mongodb_use.png
    Descrição da ilustração database_actions_sql_for_mongodb_use.png

Testar Conexão Usando um Aplicativo Node.js

  1. Faça download do Node.js. Se você já tiver baixado ou instalado o Node.js para o seu ambiente, poderá ignorar esta etapa.
    $ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
  2. Extraia o conteúdo do arquivo Node,js. Se você já tiver baixado ou instalado o Node.js para o seu ambiente, poderá ignorar esta etapa.
    $ tar -xf node-v14.17.5-linux-x64.tar.xz
  3. Configure a variável de ambiente PATH. Se você já tiver baixado ou instalado o Node.js para o seu ambiente, poderá ignorar esta etapa.
    $ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
  4. Teste sua conexão com um exemplo de Javascript.
    1. Criar um novo diretório.
      $ mkdir autonomous_mongodb
      $ cd autonomous_mongodb
      $ npm init –y
    2. Instale a dependência do mongodb.
      $ npm install mongodb
    3. Crie um aplicativo JavaScript chamado 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);
      
      Observação

      Use a codificação de porcentagem de URI para substituir quaisquer caracteres reservados em seu URI de string de conexão — em particular, caracteres em seu nome de usuário e senha. Estes são os caracteres reservados e sua porcentagem de codificação:

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

      Por exemplo, se o seu nome de usuário for RUTH e a sua senha for @least1/2#?, a string de conexão MongoDB com o servidor <server> poderá ter esta aparência:

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

      Dependendo das ferramentas ou drivers usados, você poderá fornecer um nome de usuário e uma senha como parâmetros separados, em vez de como parte de uma string de conexão URI. Nesse caso, você provavelmente não precisará codificar nenhum caractere reservado que ele contenha.

      Consulte também:

    4. Execute o exemplo. A saída deve ser semelhante a esta:
      $ node connect
      {
        _id: new ObjectId("611e3266005202371acf27c1"),
        title: 'Back to the Future',
        year: 1985,
        genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ]
      }