Use a API MongoDB com o Oracle Autonomous AI Database na Infraestrutura Dedicada do Exadata
O Oracle Database API for MongoDB traduz 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 criem aplicativos de armazenamento de documentos JSON para o Oracle Database que usam drivers e ferramentas que entendem o protocolo MongoDB. See Overview of Oracle Database API for MongoDB in Oracle Database API for MongoDB for a detailed overview of this API.
Ativar API MongoDB
Você pode ativar a API MongoDB para um Autonomous AI Database na console do OCI ou manualmente usando o Oracle REST Data Services (ORDS).
Para usar a API MongoDB com um Autonomous AI Database, instale e configure o ORDS (Oracle REST Data Services) gerenciado pelo cliente separadamente, e a versão do ORDS deve 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 AI 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 atualizandoaté 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.
Para ativar o MongoDB manualmente:
-
Instale e configure o ORDS usando o comando
ords install adb.Consulte Instalando e Configurando ORDS Gerenciados pelo Cliente no Autonomous AI Database no Oracle REST Data Services Installation and Configuration Guide para obter mais detalhes.
-
Criar um usuário ativado para ORDS.
-
Conecte-se ao ORDS usando o shell MongoDB.
Para obter uma demonstração das etapas acima, consulte Getting Started no Oracle REST Data Services Installation and Configuration Guide.
Conectar Aplicativos MongoDB
Depois que a API do MongoDB for ativada, você poderá criar um usuário do MongoDB e estabelecer conexão com o Autonomous AI Database com sua string de conexão.
Com a string de conexão da API do 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 do MongoDB:
-
Na página Detalhes do Autonomous AI Database, selecione a guia Configuração da ferramenta.
-
Na linha API MongoDB, em URL de Acesso, clique em Copiar.
Se você estiver usando a API MongoDB no Autonomous AI 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 o SCAN do cluster. Sem isso, os clientes MongoDB não poderão se conectar ao banco de dados. Você pode permitir conexões com todos os Autonomous AI Databases no cluster usando o registro DNS Curinga ou permitir um Autonomous AI Database específico:
Testar Conexões MongoDB
Criar um Usuário de Teste do Autonomous AI Database para MongoDB
Você pode criar um usuário de teste, ou um usuário autenticado da mesma forma, para fins de teste.
-
Abra a Console do OCI para seu Autonomous AI Database.
-
Clique em Database Actions.
-
No Database Actions Launchpad, clique em Administration > Database Users.
-
Clique em + Criar Usuário na página Usuários do Banco de Dados.
-
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.
-
Clique na guia Atribuições Concedidas.
-
Além das atribuições padrão, selecione e adicione a atribuição
SODA_APPpara o usuário. -
Clique em Criar Usuário.
Testar Conexão Usando a Linha de Comando
-
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** > -
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> -
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
-
Baixe o 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 -
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 -
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 -
Teste sua conexão com um exemplo de Javascript.
a. Criar um novo diretório.
$ mkdir autonomous_mongodb $ cd autonomous_mongodb $ npm init -yb. Instale a dependência do mongodb.
$ npm install mongodbc. 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);
d. 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' ]
}
Codificação percentual de URI para caracteres reservados
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:
| Caractere Reservado | Codificação Percentual |
|---|---|
| ! | %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 do MongoDB com o servidor <server> poderá ter a seguinte 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.