Usando o Oracle Database API for MongoDB

O Oracle Database API for MongoDB permite estabelecer conexão com o Oracle Autonomous Database usando drivers e ferramentas da linguagem MongoDB.

O Oracle Database API for MongoDB aproveita 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 convergido permitem que você use SQL para consultar ou atualizar dados JSON.

Observação

MongoDB requer 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 Tipos de Carga de Trabalho do Autonomous Database para obter mais informações.

Tópicos

Configurar o Acesso para MongoDB e Ativar MongoDB

O 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

MongoDB requer 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, ative a API MongoDB na instância do Autonomous Database.

Configurar o 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ê seleciona o 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 API do Oracle Database para MongoDB, configure o acesso seguro selecionando e configurando um destes tipos de acesso à rede:

Configurar um Autonomous Database for MongoDB Existente

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



Observação

Para usar a API do Oracle Database para MongoDB, a Rede deve ser configurada e o Tipo de acesso deve ser: Acesso seguro somente de IPs e VCNs permitidos ou Somente acesso de 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 a ACL de um endereço IP, você precisará obter o endereço IP público. Há várias maneiras de mostrar seu endereço IP público:
  • Na área de escolha de acesso à rede, clique em Adicionar meu endereço IP. Isso copia seu endereço IP no campo Valores.

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

Os endereços IP públicos podem mudar. 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 deverá ser verificada por você.

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 nessa LAN terá acesso ao banco de dados com as credenciais de banco de dados.
Bloco CIDR Laptop de desenvolvimento local Uso da notação IPv4/32
Endereços IP separados por vírgulas Número pequeno de laptops de desenvolvimento local conectados em LANs distintas (com endereços IP públicos distintos) Pode ser cansativo gerenciar mais de 10 notebooks.
Bloco CIDR Laptops de desenvolvimento local conectados na mesma sub-rede expostos à Internet (cada laptop tem seu próprio endereço IP público) Confie na notação em 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 a 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 de desenvolvimento local que acessa um Autonomous Database de teste com conexões do ambiente de teste ou do pipeline CI/CD Uma opção de configuração comum para 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 de 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 muda para atualização até que 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 Integradas do Autonomous Database para obter mais informações.

Gerenciamento de usuários para MongoDB

O 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.

O 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
coleta tabela
documento documento (em uma coluna)

Por exemplo, você pode criar uma coleção usando o 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 para MongoDB, você faz a autenticação usando um nome de usuário e uma senha do Autonomous Database. Essa conexão autenticada então acessará coleções dentro do esquema correspondente. Esse usuário deve atender aos seguintes requisitos:

Observação

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

O acesso aos esquemas não concedidos ao usuário é proibido. 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 do Autonomous Database CREATE USER, ALTER USER e DROP USER, 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 criar uma coleção em um banco de dados que não existe, o esquema será criado automaticamente. Consulte Oracle Database API for MongoDB para obter mais informações.

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

As etapas a seguir usam o Database Actions para criar um usuário de teste com as atribuições apropriadas. Você também pode usar o Database Actions SQL 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 do seu Autonomous Database.
  2. Selecione Database Actions.
  3. No Launchpad do Database Actions, selecione Administração > Usuários de Banco de Dados.
  4. Selecione + Criar Usuário na página Usuários de Banco de Dados.
  5. Informe um Nome de Usuário e uma Senha para seu usuário de teste. Selecione Acesso à Web e defina a Cota no tablespace DATA.
  6. Selecione a guia Atribuiçõ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 você deve configurar o acesso à rede e ativar a API MongoDB. Consulte Configurar Acesso para 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 Access Database Actions como ADMIN para obter mais informações.

  2. No Launchpad do Database Actions, em Serviços Relacionados, clique em API do Oracle Database para 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 usuário de teste. Consulte Criar um Usuário de Teste do Autonomous Database 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 percentual de URI para substituir quaisquer caracteres reservados no URI da string de conexão - particularmente, no seu nome de usuário e senha. Estes são os caracteres reservados e suas codificações percentuais:

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

    Por exemplo, se seu nome de usuário for RUTH e sua senha for @least1/2#?, sua 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 dos drivers usados, talvez você possa fornecer um nome de usuário e uma senha como parâmetros distintos, em vez de como parte de uma string de conexão do URI. Nesse caso, você provavelmente não precisará codificar os caracteres reservados que eles contêm.

    Consulte:

  2. Crie uma coleção e insira documentos nela.
    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 coleção 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 feito download ou instalado Node.js para 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 feito download ou instalado Node.js para 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 feito download ou instalado Node.js para 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 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 percentual de URI para substituir quaisquer caracteres reservados no URI da string de conexão - particularmente, no seu nome de usuário e senha. Estes são os caracteres reservados e suas codificações percentuais:

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

      Por exemplo, se seu nome de usuário for RUTH e sua senha for @least1/2#?, sua 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 dos drivers usados, talvez você possa fornecer um nome de usuário e uma senha como parâmetros distintos, em vez de como parte de uma string de conexão do URI. Nesse caso, você provavelmente não precisará codificar os caracteres reservados que eles contêm.

      Consulte:

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