UOL Meu Negócio

Começando a Entender os Bancos de Dados NoSQL: o MongoDB

Saiba mais sobre esse sistema

Faz tanto tempo que os bancos de dados relacionais dominam o mercado que em certo momento a expressão banco de dados virou sinônimo de bancos de dados relacionais (veja mais informações neste artigo).

Esse tipo de tecnologia ainda domina o mercado, mas vem crescendo rapidamente o uso de diversas novas tecnologias de armazenamento de dados. Estes novos bancos de dados são chamados, genericamente, de bancos NoSQL, abreviatura da expressão “Not Only SQL”, ou seja, não apenas SQL (sendo SQL a linguagem padrão usada por quase todos os bancos relacionais).

Os bancos NoSQL não são necessariamente parecidos entre si, apenas são classificados dessa maneira para se diferenciarem dos bancos relacionais. O produto que lidera este mercado é o MongoDB (clique aqui para ver o ranking dos bancos de dados mais usados no mundo). A seguir, apresento algumas características deste sistema gerenciador de banco de dados.

Como funciona

O MongoDB é um banco de dados que armazena documentos no estilo JSON (fala-se “Jeison”). Isso quer dizer que o desenvolvedor pode carregar para o banco de dados qualquer documento que tenha a sintaxe exigida pelo JSON, sem se preocupar com a estrutura de dados em si.

Para ficar mais claro: digamos que você não saiba exatamente quais dados sua aplicação vai precisar usar e, por causa disso, seja necessário alterar frequentemente o seu código. Para o MongoDB, não importa se sua aplicação parou de gravar dados sobre o nome do fornecedor do produto ou se começou a registrar a cor do produto vendido. Ou seja, não faz diferença que você tenha mudado a estrutura dos dados gravados. Basta que seu código mande documentos no formato adequado, respeitando a sintaxe do documento JSON.

Documentos JSON

Se você já viu o conteúdo de um arquivo XML, vai perceber que os documentos JSON são muito parecidos. A sintaxe do JSON é bastante simples, suporta diversas estruturas de dados e permite validação por tipo de dados.

Este é um documento JSON que trata da coleção “Alunos” (que pode incluir infinitos “documentos”), informando os campos “Nome” do aluno e suas “Notas” (observe que notas é um campo que aceita múltiplos valores).

        { “nome”: “João”, “notas”: [ 8, 9, 7 ]  },

        { “nome”: “Maria”, “notas”: [ 8, 10, 7 ] },

        { “nome”: “Pedro”, “notas”: [ 10, 10, 9 ] }


Modelo de dados

Como em qualquer banco de dados, no MongoDB é importante definir o modelo de dados adequado para sua aplicação. No entanto, as técnicas usadas são muito diferentes daquelas consideradas nos bancos de dados relacionais. A ideia principal é preocupar-se com quais dados serão extraídos do banco e não como os dados são gravados, como é tradicional no mundo relacional.

No MongoDB, os dados não são tratados como “registros”, mas sim como documentos (no formato JSON, como eu já comentei anteriormente). E também não usa o conceito de “tabelas”, mas sim coleções.

A modelagem dos bancos de dados no MongoDB consiste, portanto, em definir quais coleções serão necessárias no banco e qual o layout dos documentos gravados em cada coleção.

Aqui entra uma ressalva de importância fundamental: uma vez definido o modelo de dados, não importa que você precise fazer alterações no layout dos documentos gravados no MongoDB. Você pode incluir novos atributos, excluir outros que não são mais usados, sem se preocupar em mexer no banco de dados. Basta corrigir a sua aplicação e enviar os novos documentos JSON.

Essa característica ajuda muito na produtividade da programação, porque alterações na estrutura de dados não precisam ser aplicadas e testadas no banco de dados. Apenas a aplicação precisa mudar.

Escalabilidade

Outra característica essencial do MongoDB é a escalabilidade. Não importa que você inicie seu projeto para atender algumas centenas de pedidos por dia, mas que no futuro sua aplicação passe a atender bilhões de pedidos por dia. O MongoDB foi concebido para atender demandas gigantescas (aliás, seu nome vem da palavra inglesa “huMONGOus”, que significa gigantesco).

Quando seu banco cresce muito, é muito fácil adicionar novos “nós” no seu banco e dividir a operação entre vários servidores (normalmente operando na nuvem).

Perspectivas para o futuro

MongoDB é um dos inúmeros bancos de dados NoSQL existentes no mercado. Existem vários outros produtos de destaque nesta categoria, como Cassandra, Redis, ElasticSearch, Neo4J etc.

O mercado dos bancos NoSQL tem crescido absurdamente nos últimos cinco anos, especialmente no caso do MongoDB. No momento em que escrevo este artigo, este produto acaba de assumir a 4ª posição entre todos os produtos de bancos de dados usados no mundo inteiro.

Isso mostra que ele vem sendo adotado em massa por especialistas em TI e, portanto, pode ser também uma boa opção para o seu projeto.

Até a próxima!