Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Migrar de um RDBMS para o MongoDB com a ajuda da AI: uma introdução ao conversor de query

Nic Raboy4 min read • Published Aug 28, 2024 • Updated Aug 28, 2024
SQLAtlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Migrar seus aplicativos entre bancos de dados e linguagens de programação pode parecer uma tarefa árdua. Você precisa exportar e importar seus dados, transferir seus esquemas e fazer possíveis alterações na lógica do aplicativo para acomodar a nova linguagem de programação ou sintaxe do banco de dados. Com o MongoDB e a ferramentaRelational Migrator, essas atividades não precisam mais parecer uma tarefa árdua e, em vez disso, podem se tornar mais automatizadas e simplificadas.
Conversor de consultas animado
Neste artigo, exploraremos a obtenção de consultas SQL do seu aplicativo existente e o aproveitamento da funcionalidade do Query Converter incorporada à ferramenta Relational Migrator para gerar substitutos imediatos compatíveis com o MongoDB.

Pré-requisitos

Dependendo de seus objetivos com este artigo específico, você pode acompanhar apenas a ferramentaRelational Migrator, pois ela contém esquemas de exemplo que funcionarão para experimentação. No entanto, se você quiser jogar com seus próprios dados, pode se conectar a um dos populares RDBMS.

Gere queries no MongoDB com a ajuda do AI

Abra o Relational Migrator e escolha criar um novo projeto. Para fins deste artigo, clicaremos em "Use a sample schema" para brincar. Executar queries e consultar dados não é importante aqui. Queremos apenas conhecer nosso esquema, nossas queries SQL e com o que terminaremos nossa aventura em termos de query.
Relational Migrator novo projeto
O esquema de amostra que planejamos usar contém clientes e informações de compra para esses clientes. No Relational Migrator, isso é chamado de banco de dados do Northwind.
Modelo erd do Relational Migrator
Para este exemplo, queremos converter nossas queries e não focar na migração de dados ou esquemas. Com isso em mente, escolha a aba "Geração de código", seguida pela aba "Conversor de query".
Aba Conversor de query do Relational Migrator
Agora, podemos nos divertir!
Podemos receber query de nosso aplicativo e usar os recursos de AI da ferramenta para retornar o equivalente do MongoDB na linguagem de programação de nossa escolha.
Começaremos pequenos. No campo "SQL Query", adicione o seguinte:
1SELECT contact_name, country
2FROM customers
3WHERE country = 'USA'
Sabemos que a consulta acima contém uma projeção de colunas a serem incluídas, uma tabela para consulta e uma condição para filtrar quais dados devem ser retornados. Se escolhermos converter para JavaScript, obteremos uma resposta semelhante à seguinte:
1async function query(db) {
2 return await db.collection('customers').find({ country: 'USA' }, { projection: { contactName: 1, country: 1, _id: 0 } }).toArray();
3}
Se quiséssemos, poderíamos ter usado um asterisco na projeção para incluir todas as colunas, mas sabemos, como usuários experientes do banco de dados, que, para obter o melhor desempenho, devemos retornar somente o que precisamos.
Vamos levar as coisas para o próximo nível com nossas conversões SQL-para-MongoDB.
Veja a seguinte consulta SQL, por exemplo:
1SELECT country, COUNT(*) AS total
2FROM customers
3GROUP BY country
A query acima contém uma projeção, mas também contém uma aggregation por meio do uso do operadorGROUP BY . Ao executar a query pelo Conversor de query, acabamos com um resultado como o seguinte:
1async function query(db) {
2 return await db.collection('customers').aggregate([
3 { $group: { _id: "$country", total: { $sum: 1 } } }
4 ]).toArray();
5}
Observe que, desta vez, não temos uma operação.find, mas uma operação .aggregate. O Query Converter usou um pipeline de agregação do MongoDB para fazer o trabalho.
Tudo bem, então estamos ficando um pouco mais complexos na forma como interagimos com nosso banco de dados relacional.
Vamos continuar aprimorando nossa capacidade de consulta. Inclua a seguinte query SQL na ferramenta Query Converter:
1SELECT customers.contact_name, SUM(order_details.unit_price) AS spent
2FROM orders
3JOIN customers ON orders.customer_id = customers.customer_id
4JOIN order_details ON orders.order_id = order_details.order_id
5JOIN products ON order_details.product_id = products.product_id
6GROUP BY customers.contact_name
A consulta SQL acima tem uma projeção, estamos juntando três tabelas diferentes e agrupando os resultados.
Ao executar a conversão, obteremos um resultado semelhante ao seguinte:
1async function query(db) {
2 return await db.collection('orders').aggregate([
3 {
4 $lookup: {
5 from: 'customers',
6 localField: 'customerId',
7 foreignField: 'customerId',
8 as: 'customer'
9 }
10 },
11 {
12 $unwind: '$customer'
13 },
14 {
15 $lookup: {
16 from: 'orderDetails',
17 localField: 'orderId',
18 foreignField: 'orderId',
19 as: 'orderDetail'
20 }
21 },
22 {
23 $unwind: '$orderDetail'
24 },
25 {
26 $lookup: {
27 from: 'products',
28 localField: 'orderDetail.productId',
29 foreignField: 'productId',
30 as: 'product'
31 }
32 },
33 {
34 $unwind: '$product'
35 },
36 {
37 $group: {
38 _id: '$customer.contactName',
39 spent: {
40 $sum: '$orderDetail.unitPrice'
41 }
42 }
43 },
44 {
45 $project: {
46 _id: 0,
47 contactName: '$_id',
48 spent: 1
49 }
50 }
51 ]).toArray();
52}
Ao usar a funcionalidade Query Converter da ferramenta Relational Migrator, é importante observar algumas coisas:
  • Embora os resultados possam ser perfeitos ou quase perfeitos na maioria das vezes, dependendo da complexidade de suas consultas, você deve sempre testar os resultados antes que eles entrem em um ambiente de produção.
  • O processo de conversão pode não ser imediato. Espere que determinadas queries levem alguns minutos para serem convertidas.
  • Com o código gerado por IA, os resultados podem diferir entre as gerações, mesmo ao usar os mesmos critérios de entrada mostrados neste artigo.
Ter uma AI disponível pode ser uma grande ajuda se você tiver um conhecimento limitado do MongoDB, mas a tenha como parte de seus planos futuros.

Conclusão

Você teve uma amostra do que é possível fazer quando se trata de migrar de um relational database para o MongoDB. Em particular, vimos como usar o Query Converter, um novo AI que é fornecido com a ferramenta Relational Migrator. O uso do Relational Migrator pode deixar o seu processo de migração mais organizado, não apenas do ponto de vista dos dados, mas também do ponto de vista da query e da camada de aplicativos.
Quer continuar a conversa? Acesse a comunidade de desenvolvedores do MongoDB.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Amazon Web Services Amazon Web Services cole Visual ETL para seus dados no MongoDB Atlas


Nov 22, 2024 | 3 min read
Tutorial

RAG com Atlas Vector Search, LangChain e OpenAI


Sep 18, 2024 | 10 min read
Notícias e Anúncios

Análise analítica quase em tempo real alimentada por espelhamento no Microsoft Fabric para o MongoDB Atlas


Nov 20, 2024 | 4 min read
Tutorial

Crie um mecanismo de pesquisa de imagens com Python e MongoDB


Sep 18, 2024 | 8 min read
Sumário
  • Pré-requisitos