EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Modernizando esquemas RDBMS com um document model do MongoDB

Tim Kelly6 min read • Published Mar 06, 2024 • Updated Mar 06, 2024
MongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Bem-vindo à empolgante jornada de transição do reino tradicional dos relational database para o mundo dinâmico do MongoDB! Essa é a primeira entrada de uma série de tutoriais que ajudam você a migrar de relational database para o MongoDB. Aperte o cinto enquanto embarcamos em uma aventura emocionante repleta de design de esquemas, modelagem de dados e as maravilhas do document model. Diga adeus aos limites rígidos de tabelas e linhas e olá às possibilidades ilimitadas de collection e documentos. Neste tutorial, desvendaremos os mistérios do design do esquema do MongoDB, explorando como aproveitar sua flexibilidade para otimizar seu armazenamento de dados como nunca antes, usando a Relational Migrator!
A migração de um banco de dados relacional para MongoDB envolve várias etapas. Depois de determinar o banco de dados e os requisitos do aplicativo, a etapa inicial é o projeto do esquema. Esse processo envolve várias etapas, todas centralizadas em como você pretende acessar seus dados. No MongoDB, os dados acessados juntos devem ser armazenados juntos. Vamos mergulhar no processo de design de esquema.

Design de esquema

A diferença mais fundamental entre o mundo dos bancos de dados relacionais e MongoDB é como seus dados são modelados. Há algumas mudanças de terminologia a serem lembradas ao se mudar de bancos de dados relacionais para o MongoDB:
RDBMSMongoDB
DatabaseDatabase
Tabelacoleção
linhaDocumento
colunaCampo
IndexIndex
JOINDocumento incorporado, referências de documentos ou $lookup para combinar dados de diferentes coleções
A transição de um relational database para o MongoDB oferece diversas vantagens devido à flexibilidade dos documentos JSON (JavaScript Object Notation). A codificaçãoBSON (Binary JSON) do MongoDB estende os recursos do JSON incluindo tipos de dados adicionais, como int, decimal, datas e muito mais, tornando-o mais eficiente para representar estruturas de dados complexas.
Documentos no MongoDB, com funcionalidades como subdocumentos (documentos incorporados) e arrays, alinham-se bem com a estrutura dos objetos no nível do aplicativo. Esse alinhamento simplifica o mapeamento de dados para os desenvolvedores, em oposição às complexidades do mapeamento de representações de objetos para estruturas tabulares em bancos de dados relacionais, o que pode retardar o desenvolvimento, especialmente quando se usam mapeadores objeto-relacionais (ORMs).
Ao projetar esquemas para o MongoDB, é crucial considerar os requisitos do aplicativo e aproveitar a flexibilidade do document model. Embora espelhar o esquema plano de um banco de dados relacional no MongoDB possa parecer simples, ele prejudica os benefícios das estruturas de dados incorporadas do MongoDB. Por exemplo, o MongoDB permite recolher (incorporar) dados pertencentes a um relacionamento pai-filho em bancos de dados relacionais em um único documento, aumentando a eficiência e o desempenho. É hora de apresentar uma ferramenta poderosa que simplificará sua transição de bancos de dados relacionais para o MongoDB: o Relational Migrator.

Relational Migrator

A transição de um banco de dados relacional para o MongoDB é significativamente mais suave com a ajuda do Relational Migrator. A primeira etapa desse processo é uma análise abrangente de seu esquema relacional existente. O Relational Migrator examina seu banco de dados, identificando tabelas, relacionamentos, chaves e outros elementos que definem a estrutura e a integridade de seus dados. Você pode se conectar a um banco de dados ativo ou carregar um arquivo .SQL contendo instruções de DDL (Data Defining Language, Linguagem de Definição de Dados). Para este tutorial, usarei apenas o esquema de amostra disponível quando você clicar em criar novo projeto.
A primeira tela que você verá é um diagrama de seus relacionamentos relacionais com o banco de dados. Isso estabelece as bases, fornecendo uma imagem clara do seu modelo de dados atual, o que é fundamental para a elaboração de uma estratégia de migração eficaz. Ao entender os meandros do seu esquema relacional, o Relational Migrator pode fazer sugestões informadas sobre como fazer a melhor transição dessa estrutura para o document model do MongoDB.
Diagrama de esquema de banco de dados relacional
Depois que seu esquema relacional for analisado, o Relational Migrator iniciará a tarefa de sugerir esquemas MongoDB. Ela oferece sugestões para esquemas do MongoDB, traduzindo conceitos relacionais em modelos de documentos. Não se trata apenas de mover dados; trata-se de repensar como esses dados podem ser estruturados para melhor utilizar os recursos do MongoDB, como seu document model flexível e a poderosa linguagem de query.
Revise os modelos de documentos propostos, com foco na capacidade do MongoDB de lidar com documentos e referências incorporados. Avalie como esses modelos se alinham aos padrões de acesso a dados e aos requisitos de desempenho de seu aplicativo.
Diagrama de esquema de banco de dados MongoDB
Agora você entra na fase de ajuste. É aqui que você ajusta essas sugestões para se adequar ao seu aplicativo. Esse estágio também trata da criação de estratégias sobre a melhor forma de aproveitar seus dados – considerando aspectos como padrões de acesso, frequências de atualização e o potencial de crescimento de dados. Para obter um guia detalhado sobre como modelar seus dados no MongoDB, consulte nosso guia de modelagem de dados.
No MongoDB, os dados acessados juntos devem ser armazenados juntos.Isso permite evitar operações$lookupcom uso intensivo de recursos onde não são necessárias. Avalie se deseja incorporar ou fazer referência a dados com base em como eles são acessados e atualizados. Lembre-se de que a incorporação pode acelerar significativamente as operações de leitura, mas pode complicar as atualizações se os dados incorporados forem volumosos ou alterados com frequência. Use as sugestões do Relational Migrator como ponto de partida, mas permaneça flexível. Nem todas as recomendações serão aplicáveis, especialmente ao projetar padrões de acesso e crescimento de dados no futuro.
Você pode estar preso, olhando para a representação assustadora de suas mesas, se perguntando como reduzir isso a um número gerenciável de coleções que melhor atenda às suas necessidades. Selecione qualquer coleção para ver uma lista de sugestões sobre como representar seus dados usando matrizes ou documentos incorporados. O Relational Migrator mostrará todos os relacionamentos em seu banco de dados e como você pode representá-los no MongoDB, mas eles podem não ser apropriados para a aplicação. No meu exemplo, selecionei a coleção de produtos.
Mapeamentos sugeridos para uma coleção
Aqui, você pode ver que recebo uma lista de mapeamentos sugeridos no painel no lado direito da tela. Uma sugestão perfeita para meu caso de uso são as categorias. Provavelmente, isso será lido com o documento do produto e provavelmente não será atualizado com frequência, e apresentá-los juntos em um documento reduzirá a necessidade da operação$lookupno meu exemplo de aplicativo.
Um exemplo de sugestão que posso evitar seriam os pedidos. Para ver isso como um aplicativo de e-commerce, é razoável esperar que a array de pedidos cresça indefinidamente, à medida que mais e mais pessoas encomendam esse produto. Essa array ilimitada é considerada um antipadrão e prejudicará o desempenho do banco de dados. Agora que considero isso, posso desmarcar os campos indesejados e selecionar Aplicar.
Sugestões refinadas para uma collection
Melhor ainda, se eu nunca acessar a collection de fornecedores fora da collection de produtos, depois de incorporá-la, posso descartar essa collection e simplificar meu banco de dados.
Novo esquema de coleção com documento incorporado
Se você quiser ver as relações entre duas collection, selecione o link que as une. Aqui, você verá o relacionamento pai/filho, a natureza do relacionamento (um para um/um para muitos/muitos para muitos) e as chaves envolvidas na vinculação das collection. Compreender as relações em seus dados ajudará a informar onde você pode fazer melhorias no design do esquema.
Relação entre dados no diagrama
Considere cuidadosamente a estrutura de cada collection. A maneira como você acessa e manipula seus dados deve orientar a organização de seus documentos. A representação de relacionamentos no MongoDB é um ponto de decisão crítico. A incorporação de documentos oferece benefícios de desempenho para operações de leitura intensa, mas as referências podem ser mais adequadas para conjuntos de dados grandes ou atualizados com frequência. Você pode ler mais sobre esse conceito de dados na documentação de modelagemde dados. Use as sugestões do migrador para refinar iterativamente seu novo esquema e entenda que as sugestões são úteis, mas nem todas fazem sentido para você.
Exemplo de coleção extremamente longa
Embora a ferramenta forneça recomendações valiosas, é crucial adaptá-las ao contexto específico do seu aplicativo. Há casos limitados em que todos os seus dados em um documento serão uma decisão ideal para sua migração. A sua estratégia de migração não deve ser estática. À medida que você começa a trabalhar com seu novo esquema do MongoDB, é essencial permanecer aberto a alterações. As métricas de desempenho e uso de aplicativos do mundo real orientarão refinamentos adicionais, garantindo que sua arquitetura de banco de dados não seja apenas otimizada para as necessidades atuais, mas também escalável para demandas futuras.
Quando estiver satisfeito com o design do banco de dados, selecione migração de dados na parte superior da página. Aqui, basta inserir sua antiga de conexão do banco de dados relacional string e sua nova de MongoDB database conexão do string e seguir as instruções na tela. Se você quiser saber mais ou ficar preso no processo, a Relational Migrator documentação do contém todas as informações de que você precisa.

Modelos de modelagem de dados

Pode ser difícil entender a melhor forma de armazenar seus dados em seu aplicativo, especialmente se você é novo no MongoDB. O MongoDB Atlas oferece uma variedade de modelos de modelagem de dados projetados para demonstrar as melhores práticas para vários casos de uso. Para encontrá-los, acesse a visão geral do seu projeto e você verá o “Data Toolkit”. Abaixo deste cabeçalho, clique em "Modelos de modelagem de dados". Esses modelos existem para servir como um bom ponto de partida para demonstrar as melhores práticas, dependendo de como você planeja interagir com seus dados.
Modelos de modelagem de dados.
Embora você possa não encontrar uma réplica exata do seu aplicativo, esses modelos servem para mostrar as práticas ideais de design de esquema com base em padrões de acesso. Na maioria dos casos, algo aplicável ou que valha a pena considerar no design do seu modelo de dados será apresentado, permitindo que você maximize a eficácia do document model.

Conclusão

Se você é novo no mundo MongoDB ou já está familiarizado com o document model, a migração de um banco de dados relacional para o MongoDB requer uma análise cuidadosa. Essas ferramentas (como o Relational Migrator) e recursos estão lá para acelerar e informar sua mudança para o MongoDB e ajudá-lo a aproveitar ao máximo seus dados.
Em nosso próximo tutorial, discutiremos sobre consultas, como traduzir suas queries SQL usando o Relational Migrator e como utilizar índices para minimizar a sobrecarga de gravação, reduzir os tempos de leitura e acelerar o aplicativo à medida que passa de bancos de dados relacionais para o MongoDB.
Se você encontrou este tutorial útil, confira nosso artigo — Como modelar seus documentos para Vector Search — ou visite nossos fóruns da comunidade para ver o que outros estão fazendo com o 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
Início rápido

Pipelines de agregação complexos com Baunilha PHP e MongoDB


Sep 05, 2024 | 10 min read
Tutorial

Enriquecimento de documentos e atualizações de esquemas


Aug 13, 2024 | 2 min read
Notícias e Anúncios

Aprenda o MongoDB com os cursos gratuitos da MongoDB University


Jan 26, 2023 | 4 min read
Tutorial

Como aproveitar uma arquitetura orientada a eventos com MongoDB e Databricks


Jul 13, 2023 | 9 min read
Sumário
  • Design de esquema