O MongoDB é um banco de dados NoSQL que foi lançado em 2009. De lá pra cá, este banco de dados tem crescido em utilização e em popularidade. Hoje já estamos na versão 6.0 dele. Mas, qual a diferença dela para outros bancos de dados como SQL Server, Oracle ou MySQL?
O MongoDB é um banco de dado que não armazena os dados em um formato tabelar e relacional. Os documentos são armazenados em "documentos".
Os documentos são expressos no tão conhecido formato JSON, e armazenados no formato BSON (que não significa um JSON armazenado em binário, mas sim uma serialização binária de json). Este formato armazena os dados de maneira tipada, diferente do JSON.
Dessa forma, informações que seriam expressas assim em um banco relacional:
id | nome | titulo | ||
---|---|---|---|---|
1 | Paulo Benjamin | Consultor MongoDB | paulo.benjamin@phdatatech.com | linkedin.com/in/pcjuniorrj |
Passam a ser expressas assim:
{
id: 1,
nome: "Paulo Benjamin",
titulo: "Consultor MongoDB",
email: "paulo.benjamin@phdatatech.com",
linkedin: "linkedin.com/in/pcjuniorrj"
}
A princípio parece simplesmente uma mudança na forma como os dados são visualizados e armazenados, mas essa diferença é bem mais profunda. Com essas alterações, podemos utilizar toda a flexibilidade do JSON para guardar as informações. Assim, o documento acima poderia ser convertido para o seguinte:
{
id: 1,
nome: "Paulo Benjamin",
titulo: "Consultor MongoDB",
contato: [
{tipo: "email", contato: "paulo.benjamin@..."},
{tipo: "linkedin", contato: "@pcjuniorrj"}
],
stacks: [
"MongoDB",
"SQL Server",
"Oracle",
"MySQL",
"Redis"
]
}
Para armazenar o documento acima, seriam necessárias pelo menos 3 tabelas. E aí começamos a ter vantagens na utilização do MongoDB. As consultas passam a ser mais rápidas já que evitamos a utilização de joins a todo custo. A comparação entre os dados armazenados e os objetos de uma aplicação se tornam mais fáceis.
Outro ponto é que o MongoDB permite uma flexibilidade muito grande do esquema. Assim, para converter o primeiro documento no segundo modelo, basta um update, o que facilita muito a implementação e evoluções do esquema de dados de uma aplicação.
No entanto, estas facilidades vêm com responsabilidades. É importante lembrar que o MongoDB não vai criticar a inserção de um documento sem um campo, ou com o nome do campo errado. Essa abstração e responsabilidade, assim como outras, ficam a cargo da aplicação.
Por isso, Devs, lembrem-se: "Com grandes poderes vem grandes responsabilidades" - Tio Ben/Tia May.
Top comments (2)
Oi Paulo, artigo legal e conciso. Como podemos correlacionar com o uso do JSON Schema validation para casos em que quero que o banco critique uma tentativa de inserção/update indesejada? Obrigado!
Dá uma olhada nesse vídeo, acho que te ajuda nessa questão de validações.
youtube.com/watch?v=34XWrndyVcI