Como a modelagem de dados é diferente no MongoDB?
A modelagem de dados é o processo de desenvolvimento de uma representação visual de um aplicativo de software inteiro ou de seus componentes para comunicar as conexões entre os pontos de dados e a estrutura. Isso envolve a revisão meticulosa de seus requisitos de aplicativo e banco de dados e como a conexão entre os dois no que diz respeito às operações de dados principais – leitura, gravação e atualização.
Um modelo de dados estável é criado avaliando o padrão de uso do aplicativo e alinhando o esquema do banco de dados com ele. Portanto, o design do esquema molda seu modelo de dados. Quando se trata de um banco de dados relacional, você não pode preencher suas tabelas sem criar o esquema da tabela.
Termos-chave para saber
Antes de seguir em frente, aqui estão algumas definições básicas que você deve saber:
- Coleção – uma coleção é o conjunto de documentos no MongoDB. É o equivalente a uma tabela em um RDBMS.
- Documento – Um documento é uma estrutura composta de pares de arquivos e valores. É o equivalente a uma linha no RDBMS.
- Esquema de banco de dados – o projeto do esquema é uma arquitetura lógica e visual de um banco de dados projetado para um sistema de gerenciamento de banco de dados (DBMS).
Como a modelagem de dados é diferente no MongoDB?
Graças à flexibilidade do NoSQL, você não precisa criar um esquema antes da inserção de dados. Isso porque o MongoDB oferece suporte a uma forma dinâmica de esquema de banco de dados. Isso elimina a necessidade de projetar seu esquema com antecedência. Em vez disso, agora você pode armazenar seus dados e fazer ajustes de acordo com sua coleção.
Você pode armazenar diferentes tipos de dados em um determinado campo de uma coleção e pode até adicionar novos campos, atualizar valores de campo e excluir campos existentes. Você encontrará o verdadeiro benefício dessa flexibilidade ao mapear documentos para um objeto ou entidade.
Geralmente, uma coleção e seu documento seguem uma estrutura semelhante. Você também pode “impor” regras de validação para os documentos de sua coleção usando a validação de esquema.
Ao criar um modelo de dados, observe como seu aplicativo irá interagir com o banco de dados. Por exemplo, se for processar documentos que foram inseridos recentemente, é uma boa ideia usar coleções limitadas – coleções com tamanho fixo que suportam operações de alto rendimento.
Da mesma forma, se seu aplicativo vai funcionar com operações de leitura na maioria das vezes, você pode definir índices para oferecer suporte a consultas comuns e melhorar o desempenho.
Tradicionalmente, uma das considerações na criação de um modelo de dados é como armazenar os dados relacionados. Os bancos de dados relacionais usam tabelas para armazenar dados, onde as chaves primárias e externas são usadas para definir relacionamentos de dados.
Da mesma forma, as junções são usadas para acessar e executar operações em várias tabelas. Como alguém que mudou para o MongoDB de um DBMS relacional, como o SQL Server, você não encontrará junções no MongoDB. Isso ocorre porque o MongoDB armazena dados de coleção referenciando os dados ou incorporando os dados em uma coleção.
Portanto, se o seu modelo de dados usa dez tabelas em um banco de dados relacional, é possível que o MongoDB permita consolidá-lo em uma única coleção.
Tipos de modelos de dados
Agora que você sabe como funciona a modelagem de dados no MongoDB, vamos examinar os tipos de modelos de dados suportados pelo MongoDB. Normalmente, isso depende da estrutura do seu documento e dos relacionamentos de dados do seu aplicativo.
Modelos de Dados Embutidos
Você pode incorporar dados em um único documento ou estrutura no MongoDB. Também conhecido como modelos de dados desnormalizados, ele aproveita todo o potencial dos ricos documentos do MongoDB. Por exemplo, considere o seguinte exemplo: temos uma coleção, alunos, contendo um documento Matt. Neste documento, incorporamos dois documentos, detalhes de contato e nota .
{
"_id": "4aad66a4c13bb24f12gh199e",
name: “Matt”,
contact details: {
phone:”555-555-1234”
email address: “[email protected]”
},
grade: {
subject: “CS101”
score: “B”
}}
A incorporação armazena detalhes relevantes no mesmo documento ou registro de banco de dados. Dessa forma, você pode minimizar as consultas e atualizações necessárias para realizar operações comuns de banco de dados.
Quando você deve usar modelos de dados incorporados? Eles são úteis para melhorar o desempenho das operações de leitura. Além disso, eles são eficazes para processar a recuperação de dados de um único registro. Com este modelo, você pode usar uma única operação de gravação para atualizar os dados relacionados.
No entanto, há algo que você precisa ter em mente: a incorporação aumenta o tamanho do documento após sua criação. Em alguns casos, isso pode afetar o desempenho de gravação e também há a possibilidade de fragmentação de dados devido ao tamanho do documento em expansão.
Por último, você pode interagir com documentos incorporados usando a notação de ponto e percorrê-los com facilidade. Aqui está a sintaxe:
field.nestedField:value
Para o exemplo acima, você pode acessar seus documentos aninhados escrevendo a seguinte consulta:
db.students.find({contact details: { phone:”555-555-1234” ,email address: “[email protected]”}}).pretty()
Modelos de dados normalizados (referências)
Modelos de dados normalizados são usados para construir modelos de relacionamento um para muitos e muitos para muitos. Ao trabalhar com modelos de documentos incorporados, haverá momentos em que você terá que repetir os dados. É aqui que as referências são úteis – elas lidam com a redundância. Veja como podemos usar referências para o exemplo acima.
Dividimos nosso único documento em três documentos e, como os detalhes de contato e a nota têm a identificação do documento Matt , você pode ligar para eles quando necessário.
student
{
_id:<ObjectId1>
username: “Matt”
}
contact details
{
_id:<ObjectID2>
user_id: <ObjectId1>
email:“[email protected]”
phone:”555-555-1234”
}
grade
id:<ObjectId3>
user_id: <ObjectId1>,
subject: “CS101”,
score: “B”
}
Como você pode ver, os modelos de dados normalizados dividem os dados em várias coleções usando referências entre as coleções mais recentes. Você pode atualizar um único documento, o que atualizará outras coleções. Essa é uma maneira eficiente de atualizar dados e é usada principalmente quando seus dados passam por alterações frequentes.
Aqui estão os momentos em que um modelo de dados normalizado é a escolha mais sábia:
- Você deve modelar grandes conjuntos de dados que seguem uma certa hierarquia.
- Você deve representar vários relacionamentos muitos para muitos.
- A incorporação causaria a duplicação de dados sem beneficiar seu desempenho de leitura de forma suficiente.
Agora você pode modelar dados no MongoDB com facilidade
Agora, você sabe como a modelagem de dados no MongoDB é diferente dos DBMs relacionais, especialmente quando se trata de esquema. Você também aprendeu sobre os tipos de modelos de dados no MongoDB – desnormalizados e normalizados – e aprendeu quando usá-los.
E isso é apenas o começo; há muito mais para aprender sobre como o MongoDB pode organizar seus dados.