MongoDB para iniciantes – Introdução ao MongoDB

Banco de dados

MongoDB é um banco de dados NoSQL de propósitos gerais, distribuído e baseado em documentos.

Banco de dados do tipo SQL ainda são a grande maioria. Mas com o aumento exponencial do consumo e criação de dados nós precisamos nos preparar para o que esta por vir. E os bancos de dados NoSQL vem se mostrando uma excelente alternativa para isso.

Nesse post vamos entender melhor o que são os bancos de dados NoSQL e quais a suas vantagens em comparação com os tradicionais bancos de dados relacionais.

Mas antes de entrar de cabeça falando sobre MongoDB, vamos dar uma introdução sobre banco de dados do tipo NoSQL.

Uma comparação entre os bancos de dados e relacionais e banco de dados não relacionais, você pode conferir nesse outro post.

O que é um banco de dados NoSQL?

Os bancos de dados NoSQL (também conhecidos como “não apenas SQL”) não são tabulares, e armazenam dados de forma diferente das tabelas relacionais.

Em bancos de dados relacionais você precisa criar as tabelas, definir o esquema, definir os tipos dos campos de dados, definir as relações entre as tabelas, etc., antes de poder realmente inserir os dados.

Nos bancos de dados do tip NoSQL você não tem que se preocupar com isso. O processo de criação dos documentos, no caso do MongoDB é bem mais simples e dinâmico.

Os bancos de dados NoSQL vêm em uma variedade de tipos baseados em seu modelo de dados. Os principais tipos são documents, key-value, wide-column e graph. Eles fornecem esquemas flexíveis e escaláveis e suportam altas cargas de usuários.

Uma das vantagens do banco de dados NoSQL é que eles são realmente fáceis de serem escalados e são muito mais rápidos na maioria dos tipos de operações que realizamos no banco de dados.

Existem certas situações onde utilizar o banco de dados relacional pode ser uma melhor escolha ao invés do NoSQL, porém quando você está lidando com uma grande quantidade de dados, o banco de dados NoSQL deve ser a melhor escolha.

Vantagens do NoSQL

Hoje, as vantagens dos bancos de dados NoSQL não são segredo, especialmente quando a computação em nuvem ganhou ampla adoção.

Os bancos de dados NoSQL foram criados em resposta às limitações da tecnologia tradicional de bancos de dados relacionais. Quando comparados com os bancos de dados relacionais, os bancos de dados NoSQL são mais escaláveis e oferecem desempenho superior, e seu modelo de dados resolve várias deficiências do modelo relacional.

As vantagens do NoSQL incluem, mas não se limitam à:

  • Suporte à grandes volumes de dados estruturados, semi-estruturados e não-estruturados.
  • Facilidade de lidar com mudanças ao longo do tempo.
  • Capacidade de dimensionar horizontalmente em hardware ‘comum’.
  • Arquitetura eficiente e escalonável em vez de arquitetura cara e monolítica.
  • Suporte a múltiplas estruturas de dados.

Introdução ao MongoDB

MongoDB é um banco de dados NoSQL orientado a documentos utilizado para armazenamento de grandes volumes de dados. Ao invés de utilizar tabelas e linhas como nos bancos de dados relacionais tradicionais, o MongoDB faz uso de coleções e documentos.

O que é armazenamento baseado em documentos?

Os documentos consistem em pares de valores chave que são a unidade básica de dados no MongoDB. As coleções contêm conjuntos de documentos e funções que são equivalentes às tabelas de bancos de dados relacionais.

Se você veio de um banco de dados relacional, você pode pensar nos documentos como as linhas dos bancos de dados relacionais e as coleções como as tabelas.

{
    "_id": "5",
    "isActive": false,
    "age": 24,
    "eyeColor": "brown",
    "name": "Ada Compton"
}

Esta é uma estrutura parecida com a do JSON. Onde os dados são armazenados em forma de pares de chaves e valores.

{
    "_id": "5",
    "isActive": false,
    "age": 24,
    "eyeColor": "brown",
    "name": "Ada Compton"
}
{
    "_id": "6",
    "isActive": false,
    "age": 43,
    "eyeColor": "blue",
    "name": "Andray Conway”
}

E uma coleção, nada mais é do que um conjunto de documentos. que não necessariamente precisam ter os mesmos campos, como no exemplo da coleção abaixo:

Qual a diferença entre MongoDB e SGBDR?

A maior diferença entre o MongoDB e os bancos de dados SQL é a forma como eles lidam com os dados. Em bancos de dados SQL, os dados são armazenados na forma de uma estrutura tradicional bidimensional linha-coluna, enquanto MongoDB utiliza documentos para armazenar a informação, o que permite o armazenamento de qualquer tipo de dado.

Vamos colocar frente a frente algumas das principais diferenças entre o MongoDB e outros bancos de dados SQL:

Utiliza Tabelas com linhas e colunas.BaseUtiliza Documentos que consistem de pares chave-valor.
SGBDR é um sistema de gerenciamento de banco de dados relacionalConceitoO MongoDB é um sistema de gerenciamento de banco de dados não-relacional, orientado a documentos
SGBDRs é escalável verticalmente. O desempenho aumenta com o aumento da RAM.EscalablidadeMongoDB suporta escalonamento horizontal através de Sharding , distribuindo dados por várias máquinas.
Dificuldade para armazenar dados hierárquicos.HierárquiaPossuir suporte embutido para armazenar dados hierárquicos.
SGBDR suporta joins complexas.JoinsBancos de dados NoSQL como o MongoDB utilizam dados desnormalizados, portanto, joins ‘relacionais’ não são suportados.
O SGBDR é mais lento no processamento de grandes dados hierárquicos.PerformanceA MongoDB é extremamente rápido no processamento de grandes dados hierárquicos.
Segue os princípios ACID, Atomicidade, Consistência, Isolamento e Durabilidade.PrincípioSegue o princípio CAP, Consistência, Disponibilidade e Tolerância de Partição.
SGBDR usa SQL para consultar banco de dados.Query LanguageMongoDB usa BSON para consultar banco de dados.
Vulnerável à ataques de SQL Injection.SQL InjectionA SQL injection não é possível.
O esquema precisa ser definido no SGBDR antes de usar um banco de dados.SchemaO esquema pode ser criado e acessado de forma dinâmica no MongoDB.

Vantagens do MongoDB

MongoDB não tem esquemas definidos, ou seja, cada documento pode ter seu próprio conjunto de campos únicos dentro de uma coleção. Além disso, ele é distribuído e facilmente escalável geograficamente/horizontalmente para um melhor desempenho.

Ao considerar a mudança para uma base de dados orientada a documentos, você pode consider os seguintes pontos:

Acesso aos dados nativos do código

A maioria dos bancos de dados força você a usar mapeamentos pesados, como ORMs (Object Relational Mappers), para obter os dados em forma de objetos para usar nos programas. Como o Hibernate do Java e Entity Framework do C#.

A decisão do MongoDB de armazenar e representar dados em um formato de documento utilizando JSON significa que você pode acessá-los de qualquer linguagem, em estruturas de dados nativas dessa linguagem (por exemplo, dicionários em Python, arrays associativos em JavaScript, Mapas em Java, etc.).

Estrutura amigável a mudanças

Se você está acostumado a ter que derrubar seu site ou aplicação para mudar a estrutura dos seus dados, você está com sorte: o MongoDB foi projetado para aceitar a mudanças de forma muito mais fácil.

Não é necessário tempo parado para mudar os esquemas, e você pode começar a escrever novos dados para a MongoDB a qualquer momento, sem interromper suas operações.

Consultas e análises poderosas

De que serve um banco de dados se você não consegue encontrar coisas dentro dele? MongoDB é projetado para facilitar o acesso aos dados.

O MongoDB Query Language (MQL) é uma linguagem completa e poderosa que permite que você faça consultas profundas em documentos, e até mesmo executar pipelines analíticos complexos com apenas algumas linhas de MQL do tipo JSON.

Fácil escalabilidade horizontal

O MongoDB é projetado desde o início para ser um banco de dados distribuído. Crie clusters com replicação em tempo real, e faça coleções grandes ou de alto rendimento através de múltiplos clusters para sustentar o desempenho e o escalonamento horizontalmente.

Conclusão

Banco de dados orientado a documentos tem certas vantagens: flexibilidade (falta de estrutura rígida), boa adequação aos modernos frameworks JavaScript (uso direto do JSON), grande processamento de dados e estatísticas/análises de dados em tempo real.

O MongoDB é um dos bancos de dados NoSQL mais utilizados.Ele é fácil de entender. A linguagem de consulta de documentos fornece muitas opções e é tão poderosa quanto o SQL. Ao contrário dos bancos de dados relacionais, o MongoDB é fácil de escalar. MongoDB é amplamente utilizado juntamente com frameworks NodeJS e AngularJS e ReactJS. É uma parte central da pilha MEAN e MERN.

Espero que tenham gostado do conteúdo.

Nós vemos na próxima.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comments

Rodrigo

Utiliso de SGDB à bastante tempo e nunca tive a curiosidade de me aprofundar em NoSQL. Matéria bem explicativa e, o melhor, causa as dúvidas interessantes que nos fazem querer descobrir mais. Obrigado.

    Daniel Nunes

    Fala Rodrigo! Muito obrigado pelo seu comentário. O banco de dados NoSQL tem muitas vantagens, especialmente pra quem trabalha com Javascript no front e back end. Sem duvivas virão mais post sobre Banco de dados não relacionais.