MongoDB

MongoDB

Gabriel Barbosa de Oliveira - 12543415 (Editor)

Gustavo Bhering Grande - 12542780 (Coordenador)

Rafael de Almeida - 11872028

Felipe Tetzner - 9897870


Apresentação


Principais Features

Document Model

  • MongoDB é “document-oriented”: dados são guardados em documentos e documentos são agrupados em coleções


  • “Flexible Schema”: documentos em uma mesma coleção não precisam ter exatamente os mesmos campos, mas é possível criar regras de validação;


  • Documentos em BSON: “Binary JSON”.


Sharding

  • Processo que separa datasets maiores em “shards”, melhorando queries que poderiam ser problemáticas;


  • Escalabilidade Horizontal: cada “shard” em cada “cluster” guarda uma parte do dataset, funcionando essencialmente como uma base separada;


  • “Mongos”: processo leve que direciona as queries para os “shards” corretos.


Clusters & Replica Sets

  • “cluster”: pode ser um “replica set” ou um “sharded cluster”;


  • “replica set”: é a replicação de um grupo de servidores que contém cópias dos mesmos dados. Isso possibilita alta disponibilidade;


  • “sharded cluster”: dados distribuídos entre vários servidores.


Database Triggers

  • No MongoDB Atlas, é possível criar gatilhos que executam código quando determinado evento ocorre.


Ad-Hoc Queries

  • Comando de curta duração cujos valores dependem de variáveis e que podem ser atualizados em tempo real, o que melhora a performance das queries.


Indexing

  • Grande variedade de índices (“indexes”) com funcionalidades específicas para cada linguagem;


  • Índices podem ser criados em tempo real e podem ser declarados em qualquer campo dos documentos;


  • Um bom sistema de índices faz uma diferença significativa na velocidade das queries.




Teorema CAP

Consistência (Consistency)

Todos os clientes veem os mesmos dados ao mesmo tempo, não importa em qual node eles estejam conectados;


Disponibilidade (Availability)

Qualquer cliente que faça uma requisição recebe uma resposta, mesmo que um ou mais nodes estejam inoperantes;


Tolerância à partição (Partition tolerance)

Tolerância à quebra ou atraso de comunicação entre nodes.


MongoDB no Teorema CAP

  • MongoDB é CP (Consistente e Tolerante à Partição): resolve partições mantendo a consistência, ao custo de disponibilidade;


  • “single-master system”: cada “replica set” tem um node primário que recebe as operações de escrita. Os outros nodes do mesmo set são secundários, apenas réplicas.


  • Quando o primário fica indisponível, o secundário mais recente se torna o novo primário e o cluster fica indisponível até que os secundários “alcancem” o novo primário.




Vantagens do MongoDB

Melhor performance

  • A indexação dos elementos é feito por hashing.


  • Facilidade de procurar e atualizar dados sem passar pelo banco de dados inteiro.


Orientação a documentos

  • Formato dos dados é armazenado em JSON, facilitando a leitura e escrita.


  • Suporta queries dinâmicas 


Não há necessidade de projetar o esquema do banco de dados

  • Os dados não precisam ser predefinidos para serem armazenados no banco


  • Diferentes documentos em uma mesma coleção podem ser diferentes


Possui plataforma cloud

  • Gerenciamento do banco pelo MongoDB Atlas.



Desvantagens do MongoDB

Não há suporte para transações

Uma transação é múltiplas operações no banco unidas em uma única unidade lógica de trabalho, ou todas as operações acontecem, ou nenhuma acontece.

Em um processo de transferência de dinheiro, por não ter transações há risco de haver erro.


Sem join implementado

Por não ser um banco de dados relacional, essa operação não é implementada e para replicá-la, é preciso programar manualmente.


Dependência alta em bons indexes

Se o index não for bem implementado, a performance e velocidade são muito prejudicadas, porque o banco precisará passar por cada documento um a um.




Nichos de Aplicação

Por que usar o MongoDB?

O MongoDB é construído em uma arquitetura de expansão que se tornou popular entre desenvolvedores de todos os tipos para desenvolver aplicações escaláveis com esquemas de dados em evolução.

Como um banco de dados de documentos, o MongoDB facilita para os desenvolvedores armazenar dados estruturados ou não estruturados. Ele usa um formato semelhante ao JSON para armazenar documentos. Esse formato mapeia diretamente para objetos nativos na maioria das linguagens de programação modernas, tornando-se uma escolha natural para desenvolvedores, pois eles não precisam pensar em normalizar dados. O MongoDB também pode lidar com alto volume e escalar vertical ou horizontalmente para acomodar grande carga de dados.


Quando você deve usar o MongoDB?

O MongoDB é um banco de dados de uso geral usado de várias maneiras para dar suporte a aplicações em muitos setores diferentes (por exemplo, telecomunicações, jogos, finanças, saúde e varejo). O MongoDB encontrou um lar em muitos negócios e funções diferentes porque resolve problemas de longa data no gerenciamento de dados e no desenvolvimento de software.



Integrando grandes quantidades de dados diversos

Se você estiver reunindo dezenas ou centenas de fontes de dados, a flexibilidade e o poder do modelo de documento podem criar uma única exibição unificada de maneiras que outros bancos de dados não podem. O MongoDB conseguiu dar vida a esses projetos quando abordagens usando outros bancos de dados falharam.


Descrever estruturas de dados complexas que evoluem

Os bancos de dados de documentos permitem a incorporação de documentos para descrever estruturas aninhadas e tolerar facilmente variações nos dados em gerações de documentos. Formatos de dados especializados, como geoespaciais, são suportados com eficiência. Isso resulta em um repositório resiliente que não quebra ou precisa ser redesenhado toda vez que algo muda.


Fornecendo dados em aplicações de alto desempenho

A arquitetura de expansão do MongoDB pode suportar um grande número de transações em bancos de dados enormes. Ao contrário de outros bancos de dados que não podem suportar tal escala ou só podem fazê-lo com grandes quantidades de engenharia e componentes adicionais, o MongoDB tem um caminho claro para a escalabilidade devido à forma como foi projetado. O MongoDB é escalável pronto para uso.


Compatível com aplicações híbridos e multi-nuvem

O MongoDB pode ser implantado e executado em um desktop, um enorme cluster de computadores em um data center ou em uma nuvem pública, seja como software instalado ou por meio do MongoDB Atlas, um produto de banco de dados como serviço.


Apoiando o desenvolvimento ágil e a colaboração

Os bancos de dados de documentos colocam os desenvolvedores no comando dos dados. Os dados tornam-se como um código amigável para os desenvolvedores. Isso é muito diferente de fazer os desenvolvedores usarem um sistema estranho que requer um especialista. As bases de dados documentais também permitem a evolução da estrutura dos dados à medida que as necessidades são melhor compreendidas. A colaboração e a governança podem permitir que uma equipe controle uma parte de um documento e outra equipe controle outra parte.