Please enable JavaScript.
Coggle requires JavaScript to display documents.
MongoDB - Coggle Diagram
MongoDB
Conceitos Comuns
Orientado a documentos, semelhantes a JSON.
Utiliza sharding para particionar os dados horizontalmente em vários servidores (possui agora shard keys mutáveis, facilitando a redistribuição dos dados)
-
Utiliza protocolo líder-seguidor, permitindo réplicas para workloads com leituras intensivas
Oferece consistência rígida, assegurando que todos os membro de um conjunto de réplicas tenham os mesmos dados
Garante atomicidade e isolamento em operações de escrita concorrentes ao nível de documento (que pode conter vários registros ex funcionário e seus dependentes). Agora se uma transação mexer em dois documentos, ela não é atômica entre eles (recomendado não utilizar muito transações)
Ao contrário dos key-value que tem consultas muito simples (altera valor, remove valor, etc), tem além disso uma linguagem de consulta rica que permite recuperar e manipular os dados com facilidade
Modelagem de dados flexível, permitindo alterações no esquema sem afetar o sistema como um todo
Suporta ampla gama de opções de indexação, incluindo índices secundários, pesquisa de texto e indexação geoespacial
Possui framework de agregação (sumarização, maior, menor, etc) para análise de dados e geração de relatórios
Arquitetura
Collection, que é um grupo de documentos, equivalente a uma tabela de um relacional
Capped Collection tem um tamanho máximo definido e os documentos são mantidos na ordem de inserção. Logo ao chegar no limite, os documentos mais antigos são sobrescritos. Ideal para logs
Document que são os registros, linhas da tabela e contêm pares de chave-valor
Database conteiner para coleções, que contém todos os dados para um aplicativo específico
Shards, para particionamento horizontal. Cada shard possui servidores primários e secundários (que podem estar até em data centers diferentes, sendo os mais próximos para transacional e os mais distantes para relatórios, por exemplo)
Réplica Set, grupo de servidores que mantém cópias idênticas dos mesmos dados
Query router, que recebem as solicitações dos clientes, determinam a localização dos dados necessários e direciona para o shard apropriado
Configuration Server armazenam os metadados e definições de configuração para um cluster MogoDB. Responsáveis por manter o mapeamento de shards para Replica Sets
Storage
Storage engine mecanismos responsáveis por gerenciar como os dados são armazenados, recuperados e mantidos no sistema de arquivos. Ex.: WiredTiger
Wired Tiger suporta compressão de dados e índices, controle de concorrência a nível de documento (melhorando desempenho em operações simultâneas) e journaling (armazena os dados em log entre um checkpoint e outro). Normalmente a melhor escolha
In memory mantém todos os dados na memória, ideal para aplicações que requerem baixa latência (mas pode perder dados)
MMAPv1 antigo, ainda com concorrência a nível de collection
-
Write Concern (como tratar o caso de escritas que não foram confirmadas em banco de dados distribuídos). Define regras que dirão quando podemos confirmar que um dado foi salvo (ex. só depois que for escrito na principal e em 1 secundária)
Retriable Reads/Write parametriza o número de retentativas de escrita/leitura em caso de falhas de rede
-
Modelagem dos Dados
Esquema flexível, onde não são impostas uma estrutura rígida prévia.
A estrutura de Collections permite o mapeamento direto do que está no banco com a entidade aplicação, sem junções
A principal decisão é em torno da estrutura dos documentos e de como o aplicativo representa relacionamento entre os dados: referências ou documentos aninhados
Relacionamentos
1:1 com documentos aninhados (consome recursos para trazer todos os dados, quando você precisa apenas de 1)
-
-