MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Uma visão geral do mecanismo de armazenamento WiredTiger para MongoDB


Todo sistema de banco de dados possui um componente estruturado que é responsável por manter como os dados são armazenados e servidos tanto na memória quanto no disco. Isso geralmente é chamado de mecanismo de armazenamento. Com mais frequência, ao avaliar a arquitetura de bancos de dados operacionais, os desenvolvedores consideram fatores em primeira mão, como modelagem de dados, latência reduzida, operações de taxa de transferência aprimoradas, consistência de dados, facilidade de escalabilidade e tolerância mínima a falhas. Apesar disso, é preciso ter um conhecimento detalhado e avançado sobre o mecanismo de armazenamento subjacente para um melhor ajuste para que ele atenda aos fatores destacados com eficiência.

Um ciclo simples de um aplicativo para o sistema db é ilustrado abaixo...
Exemplo de arquitetura de aplicativo comum

Mecanismo de armazenamento WiredTiger


O MongoDB suporta principalmente 3 mecanismos de armazenamento cujo desempenho difere de acordo com algumas cargas de trabalho específicas. Os mecanismos de armazenamento são:
  1. Mecanismo de armazenamento WiredTiger
  2. Mecanismo de armazenamento na memória
  3. Mecanismo de armazenamento MMAPv1

O mecanismo de armazenamento WiredTiger tem ambas as configurações de um mecanismo baseado em árvore B e um mecanismo baseado em árvore de mesclagem estruturada em log.

Mecanismo baseado em B-Tree


Este é um dos antigos mecanismos de armazenamento dos quais outras configurações sofisticadas são derivadas. É uma estrutura de dados em árvore auto-balanceada que garante a ordenação dos dados e possibilita buscas, acessos sequenciais, inserções e exclusões de forma logarítmica. É um armazenamento baseado em linha, de modo que cada linha é considerada um único registro no banco de dados

Méritos de um mecanismo de armazenamento B-Tree

  • Alta taxa de transferência e leituras de baixa latência. B-Trees tem uma tendência de crescer largo e raso de tal forma que muito poucos nós são percorridos.
  • Mantém as chaves em ordem de classificação para travessia sequencial e os índices são balanceados com um algoritmo recursivo.
  • Os nós de armazenamento internos são sempre mantidos pelo menos pela metade, o que geralmente reduz o desperdício.
  • Fácil de lidar com um grande número de inserções e exclusões em um curto período.
  • A indexação hierárquica é empregada com o objetivo de reduzir as leituras de disco.
  • Acelera as inserções e exclusões por meio do uso de blocos parcialmente completos.

Limitações de um mecanismo de armazenamento B-Tree
  • Desempenho de gravação ruim devido à necessidade de garantir uma estrutura de dados bem ordenada com gravações aleatórias. As gravações aleatórias são mais caras do que as gravações sequenciais no armazenamento.
  • Penalidade de pronto-modificação-gravação de um bloco inteiro, mesmo para uma pequena atualização em uma linha em um bloco.

Mecanismo baseado em árvore de mesclagem estruturada de log


Devido ao baixo desempenho de gravação do B-Tree Based Engine, os desenvolvedores tiveram que encontrar uma maneira de lidar com conjuntos de dados maiores para DBMS. O Log Structured Merge Tree Based Engine (Árvore LSM) foi estabelecido para melhorar o desempenho do acesso indexado a arquivos com alto volume de gravação por um período prolongado. Nesse caso, as gravações aleatórias no primeiro estágio da memória em cascata são transformadas em gravações sequenciais no primeiro componente baseado em disco.

Méritos de um mecanismo de armazenamento em árvore LSM

  • A capacidade de fazer gravações sequenciais rápidas melhora o manuseio rápido de grandes dados de crescimento rápido.
  • Adequado para armazenamento em camadas, oferecendo às organizações uma seleção melhor em termos de custo e desempenho. SSDs baseados em flash oferecem ótimo desempenho nesse caso.
  • Melhor compactação e eficiência de armazenamento, economizando espaço de armazenamento e aprimorando o armazenamento quase completo
  • Os dados estão sempre disponíveis para consulta imediatamente.
  • As inserções são muito rápidas.

Limitações de um mecanismo de armazenamento B-Tree


Consome mais memória em comparação com o B-Tree durante as operações de leitura devido à amplificação de leitura e espaço. No entanto, algumas abordagens, como filtros bloom, atenuaram esse efeito na prática, de modo que o número de arquivos a serem verificados durante uma consulta pontual é reduzido.

A tecnologia WiredTiger foi projetada de forma a empregar as vantagens do B-Tree e do LSM, tornando-o sofisticado e o melhor mecanismo de armazenamento para o MongoDB. A TI é, na verdade, o mecanismo de armazenamento padrão do MongoDB.
Vários noves Torne-se um DBA do MongoDB - Trazendo o MongoDB para a produçãoSaiba mais sobre o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o MongoDBBaixe gratuitamente

Arquitetura do mecanismo de armazenamento WiredTiger


Como mencionado acima, ele envolve o conceito de dois mecanismos básicos de armazenamento que são os mecanismos B-Tree e LSM Tree, portanto, é um mecanismo de armazenamento de controle de simultaneidade multiversão (MVCC). Os méritos dos dois combinados permitem que o sistema veja um instantâneo do banco de dados no momento em que acessa uma coleção. Os pontos de verificação são estabelecidos de forma que uma visão consistente dos dados seja gravada em disco entre os pontos de verificação. Em caso de falha entre os pontos de verificação, é fácil recuperar com esses pontos de verificação, ou melhor, mesmo que não haja pontos de verificação para dados, pode-se recuperá-los a partir de arquivos de diário de disco.

Uso extensivo de cache em vez de disco para aprimorar a baixa latência. O mecanismo de armazenamento WiredTiger depende muito do cache de página do sistema operacional, de modo que os dados compactados são buscados sem envolver o disco. Além disso, os dados usados ​​menos recentemente são limpos da RAM, preservando mais espaço para o cache.

O conceito de armazenamento B-Tree oferece leituras altamente eficientes e bom desempenho de gravação com baixa utilização da CPU. Ele também possui uma implementação de bloqueio em nível de documento que permite cargas de trabalho altamente simultâneas e, consequentemente, essa simultaneidade facilita o servidor a aproveitar muitas CPUs principais. Em geral, todas essas teses potencializam a alta escalabilidade do banco de dados.

A edição corporativa suporta criptografia em disco para o mecanismo de armazenamento WiredTiger, que é um recurso que melhora muito a segurança dos dados.

O mecanismo de armazenamento WiredTiger permite um registro de gravação antecipada que garante uma recuperação automática de falhas e torna as gravações duráveis.

Vantagens do mecanismo de armazenamento WiredTiger

  • Armazenamento eficiente devido a várias tecnologias de compactação, como Snapp, gzip e compactações de prefixo.
  • É altamente escalável com leituras e gravações simultâneas. No final, isso melhora a taxa de transferência e o desempenho geral do banco de dados.
  • Garanta a durabilidade dos dados com registro de gravação antecipada e uso de pontos de verificação.
  • Uso ideal de memória. O WiredTiger usa o cache interno e o cache do sistema de arquivos.
  • Com o cache do sistema de arquivos, o MongoDB pode usar facilmente a memória livre que não é usada pelo cache do WiredTiger.

Retrocessos do mecanismo de armazenamento WiredTiger


Dificuldades na atualização dos dados. O esquema de simultaneidade impede atualizações in-loco, de modo que a atualização de um valor de campo em um documento reescreve todo o documento.

Conclusão


O mecanismo de armazenamento WiredTiger integra conceitos de dois principais mecanismos de armazenamento, o mecanismo de armazenamento em árvore B-Tree e LSM para obter o desempenho máximo e ideal. Pesar as vantagens de ambos os casos e empregá-las coletivamente torna o WiredTiger um mecanismo de armazenamento de uso geral. Por esse motivo, nas versões atuais do MongoDB, é o mecanismo de armazenamento padrão. Isso implica que se você realmente não tem um forte motivo para abominá-lo, então é o melhor para seus dados. No entanto, a escolha do mecanismo de armazenamento depende muito do seu caso de uso de dados, ou melhor, onde o WiredTiger não pode atender às suas expectativas. Em geral, este é o melhor mecanismo de armazenamento padrão.