MongoDB 1.1

MongoDB

Ficheiro:MongoDB Logo.svg – Wikipédia, a enciclopédia livre


Membros
Giovanni Shibaki Camargo (Editor)
Nusp: 11796444
Lucas Keiti Anbo Mihara
Nusp: 11796472
Rafael Corona (Apresentador)
Nusp: 4769989
Vitor Caetano Brustolin
Nusp: 11795589
Victor Gomes de Carvalho (Apresentador)
Nusp: 11275168
Alexandre Brito Gomes (Apresentador)
Nusp: 11857323
Yure Pablo do Nascimento Oliveira
Nusp: 11275317
Lucas Xavier Leite
Nusp: 10783347
Leonardo Chagas Pizzo (Diretor)
Nusp: 10288511
Link para os slides: https://docs.google.com/presentation/d/1GWpUdVYwe7CdN2K6qi8kD1wFXqXZgfOuc2vTfyBdRqo/edit?usp=sharing

dir="ltr">1 - Principais Características


  • Banco de dados orientado a documentos;

  • Utiliza JSON para armazenar os dados;

  • Os campos podem ser indexados com índices primários ou secundários;

  • São mantidos replicação dos dados para garantir alta disponibilidade do banco;

  • Esquema dos dados totalmente flexível.

prM75hOt-_vvFaQ4oL1YfwaSUyPFjlGZHr3F9sky1L9dCg9JYbDYiC_iFuSNIOBAphdxwGG8qOpSHn7uYlwppgXfMYfTwFaoqCunfARzAd0sUU8Ha6ZkDr7A7pWDDh-qje2XTPNz56g2SkRUfFM

2 - Implementa CA, CP ou AP?


MongoDB permite a escolha entre CA, CP ou AP, dependendo do que é mais importante para a aplicação.

Por padrão, MongoDB é fortemente consistente, depois de uma escrita com sucesso, leituras do banco retornarão o resultado da última escrita. Quando o nó primário fica indisponível, um nó secundário será selecionado como o novo primário e o cluster somente ficará disponível novamente quando todos os outros secundários estiverem no mesmo estado que o novo primário, e dessa forma, pelo sacrifício da disponibilidade do sistema, por padrão o MongoDB é CP.

Porém, o MongoDB também implementa alta disponibilidade através dos sets de réplicas, onde os dados são replicados, aumentando a resistência a falhas e a disponibilidade dos dados. Dependendo do concern level da leitura feita, a existência desses sets pode fazer com que o resultado da leitura seja diferente do esperado, se os sets de réplicas estiverem realizando uma escrita durante a leitura.

No caso do conjunto de dados primário encontrar um erro e reiniciar, qualquer escrita feita nele que não foi sincronizada para os secundários será perdida, sacrificando consistência por disponibilidade.


3 - Vantagens


3.1. Full cloud-based application data platform

Oferece uma série de serviços além da base dados:


  • Performance Advisor: informações de otimização do banco

  • Atlas Search: um motor de busca próprio

  • MongoDB Charts: oferece ferramentas para criação de dashboards e visualizações

  • Multi-cloud deployment: deploy facilitado nos principais provedores cloud


3.2. Schema-less

MongoDB é uma base de dados orientada a documentos, oferecendo esquemas flexíveis e disponibilizando todas as informações em uma única coleção de documentos no estilo JSON.


3.3. Facilidade de manipulação dos dados

A estrutura dos dados elimina a necessidade de junções complexas e outras operações comuns em tabelas de bancos relacionais.


3.4. Fácil de alterar e manter

A estrutura flexível dos dados permite que mudanças no esquema sejam feitas de forma fácil e ágil, em oposição a bases de dados relacionais, que usam esquemas mais rígidos.


3.5. Acesso aos dados de forma nativa

A estrutura simples dos dados permite que sejam manipulados de forma nativa em diversas linguagens, isto é, utilizando dicionários em Python ou arrays associativos em JavaScript, por exemplo.


3.6. Escalabilidade horizontal e distribuição dos dados

Ao lidar com grandes volumes de dados, o MongoDB faz uso automático de sharding, uma técnica que distribui os dados em diferentes servidores, fazendo melhor uso do espaço de armazenamento e agilizando o acesso.


3.7. Performance

Sua estrutura simples permite uma melhor performance na indexação de documentos, e esses dados também são armazenados, em sua maior parte, em memória RAM, garantindo uma performance superior a bases de dados relacionais.


3.8. Suporte técnico e documentação

MongoDB oferece uma documentação detalhada e suporte técnico completo de seus serviços. Também oferece tutoriais e conta com um fórum da comunidade.


3.9. Facilidade de instalação e uso

O processo de instalação e configuração do MongoDB é fácil e rápido, contando ainda com diversos tutoriais. A facilidade de uso da base de dados também é garantida pela sua estrutura orientada a documentos, e sua popularidade permite que soluções sejam rapidamente encontradas em fóruns da comunidade.


4 - Desvantagens


Transações


As transações referem-se ao processo de revisão e eliminação de dados indesejados. MongoDB usa transações ACID multidocumento (Atomicidade, Consistência, Isolamento e Durabilidade).


A maior parte da aplicação não requer transações, embora em algumas vezes possa precisar delas para atualizar múltiplos documentos e coleções. Esta é uma das principais limitações do MongoDB, pois pode levar à corrupção de dados.


Joins


Dar join em documentos no MongoDB pode ser uma tarefa muito tediosa. Ele falha em dar suporte aos joins como um banco de dados relacional.


Embora existam equipes mobilizadas para corrigir esta desvantagem, ela ainda está na fase inicial e levará tempo para amadurecer.


Usuários podem utilizar a funcionalidade ao adicioná-la manualmente no código. Mas coletar dados de múltiplas coleções requer múltiplas queries e isto pode levar 

a um código disperso e consumir tempo.


Indexing


MongoDB oferece performance de alta velocidade com os índices certos. No caso do índice ser implementado incorretamente ou ter muitas discrepâncias, o MongoDB funcionará numa velocidade muito baixa.


Corrigir os erros nos índices pode também consumir tempo. Essa é outra das principais limitações do MongoDB.


Tamanho dos dados limitado e aninhamento


MongoDB permite um tamanho limitado de apenas 16MB para um documento. O aninhamento de performance para documentos é também limitado para apenas 100 níveis.


Duplicatas


Mais uma das principais limitações do MongoDB é a duplicação de dados. Esse problema dificulta o manejo de data sets já que as relações não estão bem definidas.

Eventualmente, a duplicação de dados pode levar à corrupção deles, visto que o MongoDB não está em conformidade com o ACID.


Alto uso de memória


MongoDB requer uma quantidade elevada de armazenamento devido à falta de funcionalidades join, o que leva à duplicação de dados. Há um aumento na redundância de dados, que leva a espaço desnecessário na memória.


5 - Nichos de Aplicação


O MongoDB é um banco NOSQL orientado a documento. Esse tipo de banco tem uma performance incrível para escrita e não tão boa para leitura. Portanto, o MongoDB é recomendado para projetos que necessitem realizar muitas operações de escrita.

 

O MongoDB garante um crescimento horizontal do banco de forma muito mais ágil, sendo perfeito para aplicações como:

 

  • E-Commerces que dependem de grande volume de dados (por exemplo, taxas, valores de produtos, endereços de clientes, métodos de pagamento, etc.);

  • Aplicações que usem NodeJS ou Redis no backend devido à facilidade de manutenção, altíssima performance e integração com Javascript;

  • Sistemas de gerenciamento de conteúdos baseadas em Big Data.

 

Alguns dos outros casos de uso em que o MongoDB oferece uma plataforma de banco de dados robusta são sistemas de gerenciamento de conteúdo, gerenciamento de dados de produtos, análise de clientes, integração de dados em tempo real que requer grandes volumes de registro e agregação de dados de alta velocidade.

Com o MongoDB, dados de várias fontes podem ser efetivamente agregados em um repositório central para criar uma visão única de qualquer coisa – desde uma visão única do cliente até a criação de uma visão única de exposição em classes de ativos ou contrapartes em negociações financeiras.