Alura > Cursos de Data Science > Cursos de NoSQL > Conteúdos de NoSQL > Primeiras aulas do curso MongoDB: modelagem de dados

MongoDB: modelagem de dados

Modelagem de dados - Apresentação

Olá! Meu nome é Danielle Oliveira, instrutora da Escola de Dados da Alura, e irei te acompanhar neste curso de MongoDB: modelagem de dados!

Danielle é uma mulher de pele morena, cabelos cacheados e olhos castanhos. Está vestindo uma blusa lisa na cor preta e encontra-se sentada. Ao fundo, há uma parede branca sem decoração, com uma iluminação na cor verde.

Iniciaremos nossos estudos conhecendo o projeto a ser desenvolvido, que é da empresa Show Bank, que está passando por problemas em sua base. Precisaremos entender o que considerar ao se modelar um projeto de banco de dados, além de conhecer como as transações são aplicadas no MongoDB.

Conheceremos, ainda, as estruturas de dados que podem ser utilizadas para estruturar e armazenar os nossos dados internamente nos documentos, que é a estrutura de dados incorporados e a estrutura de referência.

Em seguida, entenderemos como o MongoDB trabalha com os relacionamentos e conheceremos cada um deles, que é o relacionamento 1:1 com documentos incorporados, 1 para muitos com documentos incorporados e 1 para muitos com referência de documentos.

Depois, conheceremos uma terceira forma de estruturar os nossos dados, que é a estrutura de árvore, utilizada para armazenar dados de forma hierárquica. Aprenderemos, ainda, os padrões que podem ser utilizados para definir como vamos armazenar nossos dados. São eles:

Para finalizar, colocaremos em prática alguns padrões levantados pelo time do MongoDB que podemos utilizar para modelar o nosso banco de dados. Vamos lá?

Modelagem de dados - Conhecendo o projeto

Conseguimos resolver os problemas que a empresa Show Bank estava enfrentando utilizando a validação de esquema - um recurso disponibilizado pelo MongoDB onde criamos regras de validação para os nossos campos que devem ser seguidas pelos nossos documentos para que possamos ser inseridos nas nossas coleções.

Porém, novos problemas surgiram e já não podem ser resolvidos com a validação de esquema. Entre eles, podemos citar a lentidão no momento de executar consultas, a estruturação de alguns campos nas coleções, dados que são retornados em todas as consultas sem que sejam necessários e a referenciação entre documentos.

Para que possamos entender melhor estes problemas, vamos verificar como estão as duas coleções que já criamos: de contas e de clientes.

No SQL Booster, software que utilizamos no curso anterior para realizar nossas consultas, abriremos uma guia e nos conectaremos ao banco de dados showbank para buscar nossas coleções.

Para isso, digite o comando a seguir, selecione-o e tecle "Ctrl + F6" para executá-lo:

db.clientes.find({})

Serão retornados alguns documentos armazenados dentro desta coleção.

Se verificarmos o campos _id, Nome e cpf, por exemplo, veremos que se tratam de dados do tipo string. O campo endereco, por sua vez, reúne todos os dados de rua, número, bairro, cidade, estado e CEP em um só dado, como uma grande string. A formatação deste campo de endereco gerou problemas para se trabalhar com os dados, então precisamos separá-los.

Outro ponto que também precisaremos resolver está na nossa coleção de contas. Para consultá-la, digite o comando a seguir, selecione-o e e tecle "Ctrl + F6" para executá-lo:

db.contas.find({})

Os documentos desta coleção nos serão retornados. Nela, temos o campo de CPF, mas ele não está sendo referenciado ao documento da coleção de clientes, então é outra questão se precisamos resolver.

A validação de esquemas é apenas um dos recursos que podemos utilizar para modelar o nosso projeto de banco de dados, mas há outros disponíveis. Vamos conhecê-los!

Modelagem de dados - Modelando o projeto

Ao se modelar um projeto de banco de dados, precisamos levar em consideração as necessidades da aplicação e como ela utilizará o banco de dados.

Para tentar entender como funcionará a estruturação do banco de dados e qual o foco da nossa aplicação, a pergunta principal é: o que preciso levar em consideração para modelar as coleções?

Podemos, ainda, elencar outros questionamentos para tentar entender como funcionará nossa aplicação. Nós os responderemos pensando no projeto da Show Bank:

  1. O meu foco será consulta ou armazenamento?

Pelo que já trabalhamos e considerando os problemas enfrentados, podemos dizer que o foco da empresa é tanto a consulta quanto o armazenamento.

  1. Ao realizar as consultas, preciso sempre retornar todos os dados armazenados nos documentos e coleções?

Não! Nem sempre todos os dados precisarão ser retornados. Supondo que temos o endereço do cliente em uma grande string, por exemplo, não precisaremos retorná-lo sempre que fizermos uma consulta aos dados.

  1. Por quanto tempo os meus dados vão estar armazenados no banco de dados? Esses dados serão temporários ou ficarão armazenados por tempo indeterminado?

Para a Show Bank, que é um banco digital, vamos considerar que estes dados precisam ficar armazenados por tempo inderteminado, sem que saibamos quando serão removidos, ou sequer se serão removidos algum dia.

Levando em consideração todas essas perguntas e respostas é que vamos estruturar as coleções de contas e de clientes. Precisamos, ainda, estar atentos a outros fatores como, por exemplo, a quantidade de coleções existentes e a quantidade de documentos que estão armazenados em cada coleção. Isso, porque, dependendo da quantidade de documentos, quando formos realizar consultas ou atualizar os dados, algum gargalo pode ser gerado.

Além disso, a partir da versão 4.0 o MongoDB passou a implementar transações ACID, o que precisamos levar em consideração ao modelar um projeto de banco de dados neste software.

A seguir, entenderemos um pouco mais sobre o funcionamento das transações ACID!

Sobre o curso MongoDB: modelagem de dados

O curso MongoDB: modelagem de dados possui 96 minutos de vídeos, em um total de 50 atividades. Gostou? Conheça nossos outros cursos de NoSQL em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda NoSQL acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas