MongoDB para desenvolvedores: Uma ferramenta de alta performance

Pietra Santos
6 min readApr 7, 2022

--

Certamente você já deve ter escutado algo sobre essa ferramenta que está presente no dia a dia de muitos Devs, correto? A seguir, darei um breve resumo sobre MongoDB, abordando também a linguagem C#. Vamos?!

Primeiramente, quando falamos em MongoDB, temos que pensar diretamente que ele não é um banco relacional, por isso, utilizamos a sigla NoSQL(Not Only SQL, no português, Não Somente Relacional)

Os Bancos NoSQL possuem mecanismos diferentes dos relacionais, que utilizam relações tabulares.

Alguns exemplos de bancos SQL ou bancos relacionais: Oracle, SQLServer, MySQL e PostgreSQL.

Exemplos de bancos que não armazenam dados em tabelas e são chamados de NoSQL: MongoDB, Cassandra DB, Redis e Neo4J.

Classes ou Tipos de Bancos NoSQL

  • Chave/Valor (Key-Value ) - Redis
  • Colunas (Colums Family) - CassandraDB
  • Documento (Document Model) - MongoDB
  • Grafos (Graph) - Neo4J

Por que usar o NoSQL? Quais suas vantagens?

A seguir, vou listar algumas vantagens em utilizar um banco NoSQL no dia a dia de desenvolvimento.

Performance

Para começar, Nós utilizamos os bancos de dados para armazenar os dados da aplicação, certo? eventualmente iremos manipular e obter os dados da aplicação, é aí que entra a performance, a maneira em que os bancos NoSQL trabalham os dados, eles se tornam mais performáticos em relação aos bancos SQL, levando em consideração a maneira de se trabalhar com esse banco.

Escalabilidade

É de extrema importância que consigamos escalar a nossa aplicação. O banco acompanha essa escalabilidade, pois com ele nós temos a oportunidade de escalar. Os bancos NoSQL trabalham muito com a escalabilidade em cluster, isto é, capacidade do sistema distribuído. O modo com que os bancos SQL trabalham em cluster são diferentes dos NoSQL.

Flexibilidade

Os bancos NoSQL te dão uma maior flexibilidade na hora de modelar os dados, fazendo com que não haja tantas restrições, entretanto, isso não quer dizer que devemos ir contra as regras, por isso é importante sempre ficarmos atentos, pois com grandes poderes, vem grandes responsabilidades.

Também é importante falarmos na agilidade do desenvolvimento, pois não há necessidade de definir as tabelas e toda a questão que está envolvida nos bancos SQL.

Por que e quando usar NoSQL?

Em quais casos devemos usar o NoSQL e por quê? Veja abaixo:

  • Aplicações que mudam constantemente.
  • Quando se tem menor necessidade de uma modelagem pré-definida, o modelo e o banco vão acompanhar a mudança.
  • Não há necessidade de transações, de separação das documentações, pode ser colocado tudo dentro de uma mesma estrutura.
  • Suporta alto volume de leitura/escrita.

MongoDB

Agora que sabemos o que é NoSQL e como funciona, vamos entrar mais afundo no MongoDB.

O MongoDB é um Document Model, mas também podemos trabalhar com Multi-Model. Ele também é Open Source, e multiplataforma(possibilitando a sua utilidade nos SO). Ele possui a capacidade de armazenar e retornar os dados em formato JSON, entretanto, também armazena dados em formato BSON(Binary Json).

Modelagem de Dados no MongoDB

Na imagem acima, começando pela Base de Dados, podemos ver que no MongoDB também é chamado assim, já a tabela, onde estão armazenados todos os dados é chamada de Collection (Coleção). O registro, que é o equivalente a uma linha da tabela no banco relacional, é chamado de Documento, e fica dentro da Collection. A coluna é chamada de Atributo.

Devemos sempre considerar o uso dos dados pela aplicação (consultas, atualizações e processamento). Ao contrário do “mundo relacional”, ao qual temos que pré-definir para criar um banco, uma tabela, antes de inserir os dados, nas coleções do MongoDB não exigem que seus documentos sejam pré-definidos, porém isso não anula o fato de que nós devemos tratar isso na aplicação. Nesse caso, tem a opção de declarar Schema Validations. Com ele conseguimos criar regras, assim, quando houver alguma alteração em um documento, terá uma validação prévia.

Aplicação com .NET e CRUD com MongoDB

A seguir, irei mostrar de maneira resumida, um projeto de uma API para manter restaurantes e avaliações, utilizando .Net e MongoDB.

Exemplificando

Nas imagens abaixo, onde mostro parte da camada de uma API, Temos:

  • Modelei o domínio(Domain), ao qual temos as regras de validação/negócio da aplicação.
  • A Controller, onde estão os Endpoints e o modelo de input/output da API.
  • Temos o Banco com os Schemas e os Repositórios, representando o Banco de Dados, fazendo o Mapping(mapeamento) de um para o outro (da Controller para o modelo e do modelo para Banco).
  • E para o gerenciamento do MongoDB, utilizei o Robo 3T.

Camadas

Conexão com o MongoDB

Testando a API

Robo 3T

A seguir, vou mostrar o CRUD com MongoDB, mas não irei entrar detalhadamente no código, somente funcionando. As requisições foram feitas pelo Postman.

Para buscar todos os restaurantes

Rota usando método GET: https://localhost:5001/restaurante/todos

Robo 3T

Buscar restaurante por Id

Rota usando método GET: https://localhost:5001/restaurante/624e0bd91d08c5566d67956b

Postman

Alterar restaurante

Rota usando método PUT: https://localhost:5001/restaurante

Postman

Robo 3T

Buscar restaurantes por nome

Rota usando método GET: https://localhost:5001/restaurante?nome=taverna

Postman

Incluir avaliação para um restaurante

Rota usando método PATCH: https://localhost:5001/restaurante/624e5a796a70c78de540716a/avaliar

Postman

Robo 3T

Buscar restaurante melhor avaliado

Rota usando o método GET: https://localhost:5001/restaurante/top1

Postman

Robo 3T

Remover Restaurante

Rota usando método DELETE: https://localhost:5001/restaurante/624e0bd91d08c5566d67956b

Postman

Links úteis para estudo:

MongoDB: A Plataforma De Aplicação De Dados | MongoDB

What is MongoDB? | IBM

MongoDB para Desenvolvedores .NET | Udemy

Esse foi o resumo sobre o MongoDB. Agradeço pelo tempo, e espero ter ajudado de alguma maneira. É compartilhando conhecimento que aprendemos, e fico feliz em fazer isso. Até uma próxima e bons estudos. Enjoy!

--

--

Pietra Santos

Software Developer, passionate about tech, astrophysics, potato, soccer and anime, not necessarily in that order.