Um olhar sobre MongoDB

Hoje vamos falar sobre MongoDB, mas estaríamos falando de um banco de dados para pessoas lesadas? Talvez pela sua grande facilidade de uso e reduzida curva de aprendizagem? Acredito que não, principalmente se considerarmos o fato de que ele é um dos top 10 na lista de SGBDs mais utilizados (fonte: db-engines.com) e um dos mais bem conceituados banco de dados NoSQL no mundo, teríamos que ter muitos mongos por aí, não é mesmo? Enfim, após essa breve reflexão em tom de gozação com um leve tempero de informação, vamos ao que interessa, começando pelos conceitos como entrada, antes do prato principal.

Banco de dados relacional X Banco de dados orientado a documentos

Um banco de dados relacional armazena dados em tabelas, também chamadas de relações, semelhante a uma planilha. As linhas de uma relação são chamadas de tuplas e as colunas são chamadas de atributos. Por que relacional? Existe toda uma definição teórica com base na teoria dos conjuntos, mas para nós basta saber que é porque pode haver uma associação entre os dados de uma tabela com os dados de outras tabelas. Esses dados representam coisas/entidades do mundo real, clientes, departamentos, veículos, produtos, etc., e para manipulá-los (criar, consultar, remover) utilizamos a velha e conhecida linguagem SQL. Ok até aqui? Certo.

Mas e se tivéssemos um banco não relacional ou melhor dizendo NoSQL (Not only SQL). E ao invés de guardar os dados em tabelas usando linhas e colunas guardássemos, de forma similar, em documentos no formato binário do JSON, chamado de BSON. Bom, neste caso teríamos um banco de dados orientado a documentos. Essa é a proposta do MongoDB, um software livre, de código aberto, escrito na linguagem C++ e lançado lá em 2009, disponível para Windows, Linux e OSX.

Como funciona o MongoDB?

Agora que você já sabe que os dados são armazenados em documentos no formato BSON, fique atento a algumas terminologias comparando o banco orientado a documentos com o banco relacional:

  • Um document é a unidade básica do MongoDB, o mesmo que a linha de uma tabela;
  • As colunas recebem o nome de fields;
  • Um grupo de documents forma uma collection, o mesmo que a uma tabela;
  • Um grupo de collections resultam em um database.
Comparação entre o tradicional banco de dados relacional e o MongoDB.

Obrigado, mas já estou feliz com meu MySQL

Sem problemas, é indiscutível a popularidade da abordagem relacional com suas restrições de integridade, chave primária, chave estrangeira…, isso desde os anos 70. Contudo, se você vai lidar com um grande volume de dados, altas taxas de leitura e escrita, na ordem de milhões, como aplicações de Big Data por exemplo, o modelo NoSQL do MongoDB talvez lhe traga algumas vantagens:

Esquema dinâmico

Cada documento tem sua própria estrutura, não é necessário que os dados sigam a mesma estrutura lógica como no modelo relacional (tabelas, views, relacionamentos…).

Escalabilidade horizontal

Um sistema pode crescer de forma vertical, aumentando a capacidade de um único servidor (mais memória e CPUs) onde este sistema reside ou de forma horizontal, dividindo o conjunto de dados entre vários servidores. O MongoDB suporta escalonamento horizontal através de um recurso chamado sharding, permitindo que os dados da coleção sejam armazenados em diferentes servidores e seja utilizado apenas um servidor como roteador de consulta, como se os dados estivessem em um mesmo local.

Consultas simples

As consultas são simples, devido ao modo de estruturação (formato BSON – par de valores-chave) dos dados no MongoDB, não são necessários joins complexos.

Baixo custo

Por ser de código aberto é uma maneira relativamente barata de desenvolver e implementar. Sem falar que não requer uma estrutura com computadores ou mainframes de alto custo.

Fácil instalação

É mais fácil configurar o MongoDB do que a maioria dos RDBMS.

Nem tudo são flores 🙁

É óbvio que as desvantagens também existem, aqui vão algumas:

Falta de suporte a Joins

No MongoDB não existe join como em um banco de dados relacional. No entanto, é possível usar esta funcionalidade codificando-a manualmente. Mas isso pode atrasar a execução e afetar o desempenho.

Limite de tamanho do documento

O tamanho máximo do documento BSON é de 16 megabytes.

Alto uso de memória

Devido à maneira como os dados são armazenados, sem controle de redundância, existe aumento do uso desnecessário de memória.

Usar MongoDB pensando de modo relacional

Leva um tempo para adaptar à nova abordagem.

Enfim, essa foi uma breve introdução sobre o assunto, espero que tenha sido útil para você que já conhecia e mais útil ainda para você que está conhecendo agora. No próximo post darei exemplos de uso e falarei sobre alguns dos principais comandos, não percam!

Compartilhe!