MongoDB é um Banco de Dados noSQL (Not Only SQL), também podemos dizer que é um banco não relacional. Grande parte de seus recursos, características e funcionalidades do MongoDB assenta no fato que é um Banco de Dados Orientado a Documentos (Document Database). Ao discutir/trabalhar/utilizar modelos de dado, modelagem, consulta (queries), e dados salvo no MongoDB, nós utilizamos JSON (JavaScript Object Notation).
Exemplo:
{
"_id": "462606",
"nome": "Sistema On",
"endereco": {
"nomeRua": "Avenida do Contorno",
"numero": "3498",
"complemento": "Apartamento 302",
"referencia": "Esquina com Avenida Assis Chateaubriand",
"bairro": "Floresta",
"cidade": "Belo Horizonte",
"Estado": "Minas Gerais",
"Pais": "Brasil"
},
"hobbies": [ "games", "bike", "artesão cervejeiro", "rock n roll", "tea" ]
}
Vantagem muito importante deste design é que equipes de desenvolvimento podem muito bem projetar modelos de dados para suportar o acesso de dados comuns. Como por exemplo, uma equipe desenvolvendo um site de notícias podem estruturar seu modelo de dados, para que a página mais vista necessite apenas de uma única consulta (query) do banco de dados, e pode ser feito de uma maneira elegante e é suportado pelo MongoDB.
Comparando com uma estrutura relacional, exigindo alguns joins entre as tabelas, ou uma maneira desnecessária de armazenar valores múltiplos em um único campo de uma tabela.
Como o MongoDB não baseia em junção de dados de múltiplas tabelas em conjunto, assim fica mais simples de distribuir ou shard dados em vários servidores, você tem uma grande variedade de opções considerando implantações de banco de dados entre máquinas com baixo custo e maiores e com mais poder.
MongoDB suporta nativamente scaling out através do seu recurso sharding, fazendo algo de uma forma bastante abstrato, afastando da lógica da aplicação para que desenvolvedores possam construir de uma forma agnóstico sobre o modelo de implantação utilizado.
Se é em um único dispositivo ou alguns dispositivos ou centenas de dispositivos são usados não faz diferença do ponto de vista da aplicação, desde que joins e operações em várias tabelas são difíceis de fazer em paralelo, em um sistema relacional, sua melhor opção é scaling up (escalar pra cima) e com isso, aumentando cada vez mais custos somente para seus dados serem disponíveis de um único servidor.
MongoDB funciona com design de esquemas (schemas), suporta modelos que exige leitura e escrita atômicas em documentos individuais.
Em resumo MongoDB permite que os desenvolvedores projetam modelos de dados que eficientemente suportam padrões de acesso de dados comum, também é projetado para suportar práticas de engenharia de software ágil e atender a escalabilidade e necessidades de aplicações modernas de desempenho.
Mudar de:
Para: