Já fizemos a instalação do MongoDB, mas é importante conhecer as suas características antes de utilizá-lo! Destaco 9 itens sobre MongoDB, que é um excelente banco de dados, mas não é adequado para todas as situações. Por isso uma dica para o sucesso é usar o banco de dados certo para a situação certa!
Há 7 coisas que são muito importantes e você precisa saber antes de começar a usar o MongoDB.
1- O que é o MongoDB
É um banco de dados NoSQL (diga-se de passagem o mais usado no mundo, de acordo com o Gartner), o que significa que ele não armazena seus dados em tabelas e tem o código aberto. Ele está enquadrado na categoria de bancos de dados orientado a documentos, ou seja…
- Existe um id único que identifica cada documento;
- Os valores são armazenados na forma de documentos;
- É possível consultar o conteúdo dos documentos.
2- O que é o JSON
JSON é um padrão para representação de objetos, em formato texto, independente da linguagem, sem schema e ideal para troca de dados pois é leve (pelo menos quando comparado com o XML), fácil de ler por humanos e fácil de interpretar por máquinas.
Para quem quer conhecer mais sobre o JSON e suas particularidades recomendo o link http://www.json.org/json-pt.html
3- Qual a relação entre o JSON X BSON X MongoDB
Os documentos recebidos pelo MongoDB normalmente estão no formato JSON. Embora eu nunca tenha testado, é possível armazenar dados em outros formatos, como por exemplo XML, mas não é o padrão!
Os dados são armazenados no MongoDB em um formato aberto e binário desenvolvido pela equipe do MongoDB, o BSON (Binary JSON).
Cabe dizer que:
- O BSON normalmente não ocupa menos espaço que o JSON;
- Para o MongoDB é mais fácil e rápido analizar e indexar os dados no formato BSON;
- O BSON pode ser convertido para um formato de dados nativo de uma linguagem de programação de forma muito mais rápida.
4- Como os dados são organizados dentro do MongoDB?
Uma instância do MongoDB pode possuir vários bancos de dados, cada banco de dados possui várias coleções e cada coleção possui documentos. Que são conteúdos indexáveis recebidos normalmente no formato JSON e armazenados no formato BSON.
Se fizermos um paralelo com um banco de dados relacional teremos o seguinte:
BD Relacional | MongoDB |
Banco de Dados | Banco de dados |
Tabela | Coleção |
Linha | Documento |
5 – O que quer dizer “Sem Schema”
Um banco de dados no MongoDB possui muitas coleções (pode ter no máximo12 mil). Cada coleção possui um conjunto de documentos.
Dizer que os dados não possuem schema significa dizer que dentro de uma coleção podem existir documentos com estruturas diferentes, ou seja, os documentos JSON enviados para o MongoDB e armazenado em uma dada coleção, podem ter atributos diferentes.
6- O que é escalabilidade
Este é um conceito importante em TI. É a capacidade de um sistema suportar um aumento substancial de de carga sem comprometer o seu desempenho.
Temos dois tipos de escalabilidade:
- Escalabilidade Horizontal
- Aumento da capacidade do sistema adicionando-se mais servidores.
- Escalabilidade Vertical
- Aumento da capacidade de um sistema trocando de servidor (para um mais potente) ou adicionando no servidor existente mais memória, CPU…
É importante ressaltar que o MongoDB tem a capacidade de escalar horizontalmente, de maneira simples e sem impacto para os consumidores dos dados.
Para utilizar o MongoDB não é preciso ter servidores (tão) caros, o código é aberto e por isso não é preciso pagar licença, suporta volumes de dados enormes… Sendo assim vamos abandonar os bancos de dados relacionais!!! (É uma ironia! Sempre bom deixar claro!)
7- Os bancos de dados relacionais não vão morrer
Quando eu dou um curso de bancos de dados NoSQL, é fácil mostrar todas as vantagens deste tipo de BD e ver os alunos com os olhos brilhando! Como se os bancos de dados relacionais fossem grandes vilões… Quantos sistemas você conhece ou ouviu falar que usam o MongoDB em Produção? Agora pense na quantidade de sistemas que você já ouviu falar usando SQL Server, Oracle e etc…
Não precisamos de muito esforço para entender que continuaremos usando os bancos de dados relacionais por muito tempo! Eles existem desde 1980 (aproximadamente), são um padrão de mercado e em determinadas situações são a melhor alternativa, como por exemplo:
- É necessário ter suporte a transações;
- Os dados estão normalizados e existem muitas interfaces de cadastro;
- A equipe só conhece bancos de dados relacionais;
- Os dados estão no formato de linhas e colunas;
Escrevi sobre isso no blog, dê uma olhada..
8- O MongoDB não usa a linguagem SQL
Structured Query Language é a linguagem mais conhecida e mais usada para consulta de dados.
É usada principalmente com os bancos de relacionais, mas tem suas adaptações para bancos de dados não relacionais como o Hive que possui o HQL, o Cassandra que possui o CQL.
E o MongoDB? Utiliza uma linguagem própria para a consulta dos dados.
9- Onde posso tirar dúvidas
A documentação do MongoDB é muito completa e felizmente muito fácil de entender até para quem conhece muito pouco de inglês! Em caso de dúvidas, inseguranças, curiosidades e afins não deixe de consultar o site oficial!
Sempre bom lembrar que estou a disposição para ajudar! Nem sempre consigo responder na mesma hora, mas eu sempre respondo! Meus contatos são:
- No twitter: @DaniMonteiroDBA
- Minha página no Facebook: DB4Beginners
- Meu e-mail
Para finalizar…
Esta é a segunda semana da nossa imersão no MongoDB! Na próxima semana começaremos a usá-lo fazendo operações de inclusão dos dados.