MongoDB arquitetura e funcionamento

26 Oct 2015

Olá galera, atendendo a milhares de pedidos, surge então nosso segundo post da série sobre mongoDB, neste post vou explicar um pouco sobre mais sobre a sua essência, arquitetura e funcionamento. Vamos nessa.

Vamo nessa

Funcionamento

funcionamento do mongoDB

Vamos dar uma olhada em seu funcionamento básico, primeiramente temos um app, esse app pode ser escrito em qualquer linguagem compatível com o mongoDB (nodejs, Python, Java, entre outras), porém além da linguagem esse app deve possuir o driver que funciona como uma espécie de plugin da aplicação que é o middleware entre o banco e a aplicação, ou seja, o que vai conectar a aplicação ao mongoDB.

Na parte com a cor azul mais claro da imagem podemos ver a representação de alguns “clientes”, esses clientes fazem requests para sua aplicação, portanto esses intitulados “clientes” podem ser browsers, outras aplicações, etc, podem ser qualquer coisa que necessite daquele serviço naquele momento, eles podem estar consumindo a sua REST API por exemplo.

Como mencionado, a aplicação conecta-se então ao mongoDB através do driver, e executa as operações requeridas tais como: recuperar dados, operações de CRUD, e o mongoDB retorna operações como por exemplo, o status daquela operação.

Ao entrar em estado de “hosting” o mongod entra em cena, que nada mais é que o gerenciador de processos do MongoDB. Ele gerencia “requests” de dados, acesso e algumas outras operações de acesso que funcionam em background.

É assim que esses componentes trabalham juntos, basicamente temos a aplicação no servidor interagindo diretamente com os clientes, e quando a aplicação precisa de alguma informação ou precisa guardar alguma informação ela se comunica com o mongoDB que fica em um estado de listening para requests em andamento e ela responde apropriadamente quando esses requests estão completos.

E por último, mas não menos importante nós temos o mongo shell, que é uma ferramenta muito útil para executarmos várias “tarefas administrativas” como por exemplo dar uma olhada prática no que existe no banco de dados, fazer leituras em collections etc.

Comparativo de functions e arquitetura com Mysql

Se você vem do mundo do banco de dados relacional, vai se sentir mais confortável com as nomeclaturas usadas no decorrer da série após das uma olhada nas analogias adotadas para fazer esse comparativo.

Temos o seguinte comparativo de estrutura:

Comparativo de estrutura

Collections

As collections tem um conceito similar ao de tables no Mysql, a collection representa um conjunto de informações armazenadas em comum, essas informações são bem mais “completas”, uma vez que os bancos de dados não relacionais possuem uma junção de informações muito maior que os relacionais.

Por exemplo um blog em um Schema de Mysql teriam as seguintes tabelas:

  • Posts
  • Categorias
  • Posts_Categorias
  • Autor
  • Comentários
  • Tags
  • Posts_tags

Enquanto isso o MongoDB poderia muito bem concentrar tudo isso em um único arquivo, uma vez que essas informações possuem conexões umas com as outras. Nesse caso ficariam todas em uma única collection de dados.

Documents

Cada elemento dentro da collection é considerado um document, e a soma de TODOS os documents dentro da mesma estrutura de dados formam a collection, segue um exemplo de um document, usando o mesmo exemplo de criação de um blog.

>
1
2
3
4
5
6
7
8
9
10
11
12