Usar a API MongoDB com o Oracle Autonomous Database on Dedicated Exadata Infrastructure

A API do Oracle Database para MongoDB converte o protocolo de conexão MongoDB em instruções SQL executadas pelo Oracle Database. Ele permite que os desenvolvedores que têm conjuntos de habilidades MongoDB gravem aplicativos de armazenamento de documentos JSON para o Oracle Database que usam drivers e ferramentas que entendem o protocolo MongoDB. Consulte Visão Geral da API do Oracle Database para MongoDB no Oracle Database API for MongoDB para obter uma visão geral detalhada dessa API.

Ativar API MongoDB

Você pode ativar a API MongoDB para um Autonomous Database na console do OCI ou manualmente usando o ORDS (Oracle REST Data Services).

Para usar a API MongoDB com um Autonomous Database, instale e configure o ORDS (Oracle REST Data Services) gerenciado pelo cliente separadamente, e a versão do ORDS deverá ser 22.3 ou posterior. Consulte Oracle API for MongoDB Support no Oracle REST Data Services Installation and Configuration Guide para obter os conceitos de arquitetura dessa API.

Para ativar a API MongoDB na console do OCI:
  • Na página Detalhes do Autonomous Database, selecione a guia Configuração da ferramenta.
  • Clique em Editar configuração da ferramenta.
  • Na linha API MongoDB, selecione na coluna Ativar ferramenta para mostrar Ativado.
  • Clique em Aplicar.
O estado do Ciclo de Vida muda para atualizando 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.

Para ativar o MongoDB manualmente:

Para obter uma demonstração das etapas acima, consulte Getting Started no Oracle REST Data Services Installation and Configuration Guide.

Conectar Aplicativos MongoDB

Após a ativação da API MongoDB, você poderá criar um usuário MongoDB e estabelecer conexão com o Autonomous Database com sua string de conexão.

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

Você pode recuperar sua string de conexão na Console do Oracle Cloud Infrastructure. Para recuperar a string de conexão da API MongoDB:
  1. Na página Detalhes do Autonomous Database, selecione a guia Configuração da ferramenta.
  2. Na linha API MongoDB, em URL de Acesso, clique em Copiar.

Se você estiver usando a API MongoDB no Autonomous Database no Exadata Cloud@Customer, sua equipe de rede/DNS deverá garantir que qualquer nome de host da string de conexão MongoDB seja resolvido para a SCAN do cluster. Sem isso, os clientes MongoDB não poderão estabelecer conexão com o banco de dados. Você pode permitir conexões com todos os Autonomous Databases no cluster usando o registro DNS Curinga ou permitir um Autonomous Database específico:

Testar Conexões MongoDB

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

Você pode criar um usuário de teste, ou um usuário autenticado da mesma forma, para fins de teste.

  1. Abra a Console do OCI para seu Autonomous Database.
  2. Clique em Ações do Banco de Dados.
  3. No Database Actions Launchpad, clique em Administration > Database Users.
  4. Clique em + 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 do teste. Clique em Acesso à Web e defina a Cota no tablespace DATA.
  6. Clique na 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. Clique em Criar Usuário.

Testar Conexão Usando a Linha de Comando

  1. Faça log-in como o usuário de teste. Siga as etapas do exemplo anterior para obter instruçõ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;

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 PATH do ambiente. 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' ]
      }