O que é MongoDB?
Há décadas, bancos de dados relacionais têm sido a solução preferida de gerenciamento de dados. No entanto, a grande variedade de dados que compõem as aplicações web mais modernas tornou bancos de dados orientados a documentos, como o MongoDB, sérios concorrentes de soluções tradicionais. Saiba tudo sobre MongoBD e conheça seus recursos e vantagens.
Por que o MongoDB é diferente?
Mongo deriva da palavra inglesa humongous (gigantesco) e DB nada mais é que databank (banco de dados). Assim sendo, podemos dizer que MongoDB é um gigantesco sistema de banco de dados orientado a documentos. Diferentemente de bancos de dados relacionais, que armazenam dados em tabelas estruturadas, os bancos de dados do MongoDB são armazenados em conjuntos não estruturados (collections).
Outra de suas diferenças é que o MongoDB não usa SQL como linguagem de consulta. Por este motivo, ele é rotulado como um sistema de banco de dados NoSQL. A linguagem de consulta da solução é baseada em JavaScript e se chama MongoDB Query Language (MQL). Seus registros, por outro lado, são armazenados emBSON, moldado pelo formato JSON. Graças a essas configurações, todos os tipos de dados JavaScript são suportados pelo MongoDB, o que o torna especialmente adequado a plataformas baseadas em JavaScript.
Outro interessante recurso do MongoDB é escalabilidade horizontal de seus bancos de dados. Nele, dados são distribuídos a vários servidores ao invés de ficarem armazenados em um único local central. O sistema aumenta a disponibilidade dos dados e, consequentemente, o desempenho geral do banco. Escalonar dados desta forma costuma, inclusive, ser mais barato que dedicar, a um único servidor, um hardware de melhor desempenho (escalonamento vertical).
Como o MongoDB funciona?
O MongoDB, diferentemente do MySQL, é orientado a documentos, realizando, portanto, um armazenamento de dados totalmente diferente. Ao invés de armazenar dados em tabelas nas quais cada linha (a ser preenchida por valores) tem o mesmo número de campos, o MongoDB armazena dados de forma não estruturada, em documentos BSON. Cada documento tem números de campos livres e não precisa corresponder um ao outro. Assim sendo, documentos substituem as linhas de uma tabela SQL e os campos destes documentos substituem as colunas.
Várias ferramentas possibilitam o trabalho em bancos de dados MongoDB. Além do conhecido MongoDB Shell, existe também o MongoDB Compass, aplicação gráfica para o gerenciamento de bancos de dados MongoDB. Este artigo se concentrará em explorar possibilidades do Shell.
Como a linguagem MQL é baseada em JavaScript, algumas funções já existentes podem ser transferidas e usadas em consultas e comandos complexos. Importante destacar, contudo, que todos os comandos de gravação e leitura têm a mesma estrutura no MongoDB — o que poderá ser notado no exemplo abaixo. Além dos comandos listados, existem outros que permitem o gerenciamento do banco de dados. Acesse a documentação do MongoDB para explorá-los.
db.student.find({ Name: "Carlos" })
db.student.updateOne({ Name: "Carlos" }, { $set: { Semester: 2 } })
db.student.deleteOne({ Name: "Paulo" })
db.student.insertOne({
Name: "Maria",
Alter: 18,
Semester: 1
})
Observe, no exemplo acima, comandos sucessivos em um banco de dados MongoDB. Eles são sinalizados com a estrutura db
, que diz respeito à totalidade do banco de dados. Por sua vez, student
sinaliza a pasta onde a coleção a ser operada está localizada. Por fim aparece o método a ser aplicado.
O método find()
é usado para pesquisar um documento específico, mas se você deixar o campo de parâmetro vazio, todos os documentos dessa pasta serão apresentados como resultado. No exemplo acima, todos os documentos são consultados quando o campo “Name” (nome) ganha o valor “Carlos”. O método updateOne()
é usado para atualizar valores em um documento. Nosso exemplo adiciona ao updateOne()
dois argumentos: o primeiro diz respeito ao critério de seleção e o segundo apresenta o par de valores-chave a ser atualizado. Assim, ao campo “Semester” (semestre) é adicionado um “2” em todos os casos em que um “student” (aluno) se chama “Carlos”.
O método deleteOne()
recebe apenas um único argumento: o critério de seleção a ser usado para excluir documentos. No nosso exemplo, todos os alunos chamados “Paulo” são removidos do banco de dados. O método insertOne()
também recebe um único argumento, mas que determina o documento (em conteúdo JSON) a ser inserido. Em processos de inserção no MongoDB, cada documento de uma coleção deve ganhar um número hexadecimal exclusivo de 12 bytes, que corresponde ao ID do objeto — caso este parâmetro não seja especificado pelo programador, o MongoDB gerará um ID automaticamente.
Vantagens do MongoDB
O modo como o MongoDB estrutura documentos beneficia usuários, especialmente no que diz respeito à flexibilidade e à escalabilidade. O armazenamento de dados baseado em documentos tem a vantagem de não exigir os mesmos atributos à todas as entradas, o que é ocorre nos bancos de dados relacionais. Assim, o MongoDB consegue armazenar dados não estruturados e semiestruturados. Ainda, documentos individuais podem ser reestruturados (por exemplo, com adição ou remoção de atributos/campos) sem que haja necessidade de reestruturar os demais documentos da mesma pasta. Como todos os documentos são armazenados no formato BSON, tem-se ainda a vantagem de que bancos de dados do MongoDB têm um alto grau de compatibilidade com plataformas JavaScript comuns.
Além de armazenar dados não estruturados, o MongoDB também oferece um alto grau de escalabilidade horizontal que não viola os princípios do modelo ACID (atomicidade, consistência, isolamento, durabilidade). Em bancos de dados distribuídos, muitas vezes é difícil manter a consistência, já que nem todos os dados ficam armazenados no mesmo servidor. Se vários documentos forem alterados ao mesmo tempo, essas alterações podem não ser adotadas de imediato por todos os servidores envolvidos. Caso se trate de um grande volume de solicitações, alguns dados podem passar a ser até mesmo inconsistentes. Contudo, desde o lançamento, em 2019, do MongoDB 4.2, vários documentos em servidores diversos podem ser alterados, ao mesmo tempo, sem que consistência e disponibilidade sejam afetadas.
Se você precisa de um banco de dados baseado em documentos capaz de crescer na medida em que aumentam as necessidades do seu projeto, a solução MongoDB é perfeita para você!
Em que áreas o MongoDB pode ser aplicado?
O MongoDB é uma excelente opção para quem quer implementar projetos web que contenham conjuntos de dados grandes e não estruturados. Trabalhos baseados em documentos, que não estejam vinculados a um esquema, são designados a diferentes tipos de dados, que precisam ser armazenados e processados rapidamente.
Este sistema também suporta dimensionamento horizontal e quase ilimitado, pois seus bancos de dados podem ser distribuídos com facilidade a vários servidores, sem que sua funcionalidade fique comprometida. Para garantir segurança e disponibilidade de dados a longo prazo, o MongoDB também pode ser usado para criar cópias de conjuntos de dados e disponibilizá-las em diferentes servidores. O banco de dados orientado a documentos também se destaca por conseguir combinar volumes de dados de mais de uma fonte.
Assim sendo, recomendamos o MongoDB para projetos web que tenham os seguintes requisitos:
- Escalabilidade: Se o seu projeto web crescer, provavelmente o número de solicitações aumentará, o que, por sua vez, aumentará a demanda do banco de dados.
- Disponibilidade: Se você precisa que sua aplicação esteja permanentemente disponível, mesmo em caso de falha do servidor.
- Flexibilidade: Se você precisa que seu projeto web seja adaptado dinamicamente, em diferentes momentos.
Se ainda não está certo sobre qual banco de dados é mais indicado ao seu projeto, não se preocupe! É possível combinar diferentes tipos em uma única solução, que pode ser perfeita para você.
Se você optou pelo MongoDB e quer começar a mexer com este banco de dados, acesse nosso tutorial que ensina como instalar o MongoDB.