paulo-dutra logo

MongoDB - Visão Geral

Fala galera, no post de hoje iremos falar um pouco sobre o mongodb e também sobre a visão NoSQL(not only sql) ou trazendo para um contexto complementar não relacional.

Alguns exemplos de tipos de banco de dados NoSQL:

Existe também outros tipos de banco de dados não citados acima, um exemplo é o Datomic que trabalha com o conceito de dados imutáveis.

O mongoDB é baseado em documentos é um banco sem esquema. Exemplo de um banco com esquema: quando estamos trabalhando com banco de dados relacional temos o conceito de DDL (data definition language), onde definimos os dados tais como tabelas, colunas, definir os tipos de dados dessas colunas, quais são as restrições de tamanho, depois dessa definição ao manipular dados ou inserir novos dados todo um processo de validação é aplicado em cima do “esquema” definido.

O local onde armazenamos os dados no mongo são chamados de collections (equivalente a uma tabela no modelo relacional), essa(s) collection(s) armazena documentos no formato JSON. Esses documentos podem possuir uma estrutura interna, entretanto essa estrutura pode sofrer modificações “estruturais” a qualquer momento sem impactar o que já foi armazenado, exemplo, temos uma collection chamada usuário e essa collection possui nome e telefone, depois em outro momento podemos ter um documento com nome, telefone e e-mail e depois posteriormente possuir um documento no formato anterior.

O formato JSON, pode armazenar chave e valor, objetos, array, array de objetos, multi arrays, multi objetos entre outros.

Nos documentos persistidos no mongo por padrão é criado uma chave _id, que armazena o object id, basicamente é uma especie de hash, similar a um uuid.

Foi projetado com o intuito de escalonamento horizontal ou seja trabalhar de forma distribuída (cluster) onde podemos ter mais de um servidor executando o mongoDB e ao precisar de mais processamento, seja essa necessidade temporária ou não, pode ser criado outro servidor, ao invés de aumentar os recursos do servidor atual (escalonamento vertical) apesar que o escalonamento vertical também ser uma possibilidade.

Geralmente é utilizado em cenários onde os dados são voláteis e não necessitam de certos relacionamentos entretanto o modelo orientado a documentos pode ser ideal para trabalhar com alguns tipos de cenários e não indicados para trabalhar em outros (tais como transações financeiras por exemplo).

Atualmente a chance de trabalharmos em cenários híbridos, onde um determinado software, utilize os dois ou mais cenários é cada vez mais recorrente, tirando um pouco esse viés de que um tipo de banco de dados é melhor do que o outro, e aplicando aquele tipo no cenário adequado a ele. E ai o que achou ? comente abaixo.