O
MongoDB é um banco de dados de alta performance orientado a documentos e é gratuito.
Por ser orientado a documentos (JSON) não possui transações nem joins. Resultado? Fazer consultas é algo
relativamente simples - são mais fáceis de escrever e mais fáceis de ajustar. Ele
também fazer parte da grande família de bancos NoSQL.
Antes
de prosseguir com o MongoDB, o que é NoSQL?
Aparentemente,
é uma pergunta simples. Mas sua resposta provoca um debate riquíssimo sobre o
futuro dos bancos de dados. Para começar a responder, é preciso entender que
NoSQL significa Not only SQL. E isto
faz toda a diferença.
A necessidade de lidarmos com grandes
volumes de dados é um forte motivador para pensarmos em soluções que vão além
do modelo relacional de dados. Neste caso, sistemas NoSQL tendem a apresentar
melhor desempenho, escalabilidade e também são mais fáceis de programar. Um
banco de dados NoSQL fornece um mecanismo para armazenamento e recuperação de
dados que utiliza modelos mais flexíveis do que os bancos de dados relacionais
tradicionais. Isto nos faz concluir que o NoSQL, pelo menos não nos próximos
anos, não veio para substituir os bancos SQL. Ele se popularizou para uso em
aplicações onde enfrentamos dificuldade de escalabilidade com os bancos
relacionais. Insistindo neste ponto, concluímos que existem aplicações que se
adaptam melhor em soluções relacionais e outras em que o universo não
relacional faz toda a diferença. Bases de dados NoSQL são construídas para
permitir a inserção de dados sem um esquema predefinido. Isso faz com que seja
fácil realizar mudanças significativas em aplicações em tempo real, sem se
preocupar com interrupções de serviço - o que significa que o desenvolvimento é
mais rápido, a integração de código é mais confiável e é necessário menos tempo
do administrador de banco de dados.
Voltando
o debate para o MongoDB, o que o torna tão interessante?
Frequentemente, em um
sistema relacional, temos uma tabela. E certamente possuímos colunas nesta
tabela como, por exemplo, informações sobre a venda de um produto: código do
produto, nome, quantidade vendida, nome do vendedor. Às vezes, é necessário
acrescentar alguma outra informação e, para isto, é necessário utilizar um
comando do tipo ALTER TABLE, para adicionar uma nova coluna.
No universo não relacional, com MongoDB,
não é necessário fazer isto. Como este é orientado a documentos, cada um deles
pode possuir um schema diferente.
Isto faz com que o sistema seja facilmente adaptado conforme haja evolução, ou
seja, quando é necessário fazer alguma mudança. O armazenamento sem esquema (schemaless) traz facilidades ao se lidar
com dados não uniformes (dados que possuem conjuntos diferentes de campos). Em
um ambiente relacional, no resultado de uma aplicação com dados não
estruturados, geralmente termos muitas tabelas e muitas colunas, muitas delas
esparsas (com muitos nulls) e isto
torna a manipulação mais complicada. E esta é a grande vantagem de ter um
modelo sem esquema.
O ponto aqui é quando escrevemos um
programa para acessar os dados (em Python, por exemplo), podemos perceber que
há sempre um esquema implícito. Você terá que assumir que alguns campos estão presentes
(ou ao menos prever em seu código algumas linhas para verificar a existência
deles). Por isso costuma-se dizer que há um esquema implícito. O que queremos dizer é que um banco sem
esquema transfere o esquema para o aplicativo que o acessa e isto é um problema
quando vários desenvolvedores trabalham em uma mesma aplicação. Por esta razão,
será preciso pensar muito bem seu modelo de dados NoSQL e principalmente sua
aplicação, como poderá ser feita e gerenciada.
Outras
características que tornam o MongoDB tão interessante:
- Auto - Sharding - o conceito de sharding é simples: quanto você trabalha com uma grande quantidade de dados e está no limite de disco e/ou a falta de espaço, a solução para este problema é ter os seus dados divididos entre várias máquinas.
- Indexes - fáceis de criar e excelentes otimizadores de consultas - falaremos no futuro sobre como criar e gerenciar seus indexes.
- Sem joins de alta complexidade – outra característica decorrente da não existência de um esquema.
Para
entendermos ainda mais para que serve o MongoDB, vamos fazer outra pergunta:
Quem está usando? Podemos citar alguns exemplos:
- The New York Times: utiliza o MongoDB para sua aplicação de submissão de fotos;
- Foursquare: usa MongoDB para armazenar os locais, dados dos usuários e os "check-ins", dividindo os dados em cerca de 25 máquinas na Amazon EC2;
- Expedia: uso em seu sistema de planejamento de viagens;
- Linkedin: utiliza o MongoDB na LearnIn, sua plataforma interna de aprendizagem.
- e-Harmony: com 51 milhões de usuários, o uso do MongoDB em seu sistema de pareamento de pretendentes reduziu o tempo de execução do algoritmo em 95%, de 2 semanas para apenas 12 horas.
Diante
disto tudo, outro fator que nos leva a entender que tanto o MongoDB como o
Python possuem relevância, é o destaque que eles vêm ganhando no mercado de
trabalho. De acordo com o Jobs Trends
do Indeed.com, temos uma tendência de alta na oferta de vagas para estes
campos, sendo que estão correlacionadas também à oferta de empregos na área de Big Data.
Figura 1 – Jobs Trends – MongoDB, Python e Big Data
Um abraço e até o próximo post!
0 comentários:
Postar um comentário