Arquitetura do Couchbase

Magma: O Mecanismo de Armazenamento de Documentos de Nova Geração

5 MIN DE LEITURA

A plataforma de banco de dados Couchbase oferece suporte a dois mecanismos de armazenamento: Couchstore, o padrão, e Magma, o mecanismo lançado recentemente. Ambos oferecem benefícios em vários cenários. Esta postagem no blog oferece uma breve visão geral do novo mecanismo de armazenamento Magma, fornece uma comparação de cada motor e resume os resultados do testes de desempenho. 

O Couchstore é um mecanismo de armazenamento maduro, otimizado para alto desempenho com grandes conjuntos de dados, particularmente aqueles que cabem na memória. O tamanho mínimo de bucket para o Couchstore é de 100 MB. Ele é ideal para casos de uso de cache e situações em que a compressão de dados não é um fator decisivo principal. 

O Magma é um novo mecanismo de armazenamento projetado para ter alto desempenho mesmo com conjuntos de dados muito grandes que não cabem na memória. Ele é transcendental para casos de uso em que o acesso ao disco é fundamental. O Magma é otimizado para rodar com quantidades muito baixas de memória, mesmo com conjuntos de dados muito grandes. O Magma realmente se destaca quando usado para conjuntos de dados que não cabem na memória disponível e que exigem compactação máxima de dados.

Abaixo está uma tabela de comparação que resume cada mecanismo de armazenamento.

Comparação entre Couchstore e Magma

Critérios Couchstore Magma
Cota mínima de memória do bucket 100MB 1 GB
Razão mínima de memória para dados 10% 1%
Dados máximos por nó 3TB 10TB
Otimização do tamanho dos dados Idealmente quando o conjunto de dados de trabalho cabe na memória Melhor quando o o conjunto de trabalho é muito maior do que a memória disponível e você precisa apenas de velocidade de acesso ao disco
Armazenar e acessar Acessar dados de até ~ 1TB Armazene e acesse vários terabytes de dados
Hardware Pode ser executado em hardware de baixo desempenho Hardware de qualidade é preferido
Serviços suportados Todos os serviços, incluindo pesquisa de texto completo, eventos e análise, estão disponíveis Todos os serviços, incluindo pesquisa de texto completo, eventos e análise, estão disponíveis com o lançamento da versão GA 7.1.2
Persistência de dados A maioria dos dados é acessada a partir do cache de memória As aplicações precisam de grandes quantidades de dados persistentes e duráveis
Casos de uso O caso de uso requer primariamente acesso à memória O caso de uso requer principalmente acesso ao disco

Visão Geral do Magma

O Magma é o mecanismo de armazenamento de documentos de nova geração do Couchbase Server. Ele foi projetado com os objetivos de melhorar tanto a densidade de dados quanto o desempenho de gravação em cada nó do cluster. Ele atinge esses objetivos separando os dados de índice e de documentos para minimizar a amplificação de gravação (WA). A amplificação de gravação refere-se à gravação de dados no armazenamento de arquivos, onde a gravação é multiplicada devido a fatores como dados imutáveis. O Magma também inclui um método de compactação incremental para manter o espaço e permitir alta densidade de dados e menores requisitos de memória. A redução da amplificação de gravação aumenta a taxa de transferência de gravação e também estende a expectativa de vida útil dos SSDs, diminuindo o número de ciclos de gravação e apagos.

 Outros objetivos de design para o projeto Magma incluíam:

Compactações concorrentes escaláveis – A compactação completa do banco de dados é uma operação custosa. O gerenciamento de um banco de dados de alta densidade requer compactações pequenas, concorrentes e incrementais para recuperar espaço.

Otimização de unidade de estado sólido (SSD) – O I/O aleatório foi minimizado para ocorrer apenas durante operações de busca de pontos. Enquanto os padrões de acesso de I/O de leitura e escrita sequenciais são aproveitados para tirar proveito da largura de banda total dos SSDs.

Baixo consumo de memória – Os dados de alta densidade diminuem a possibilidade de cache de leitura e escrita. Portanto, o Magma é otimizado para utilizar um pequeno espaço de memória.

Coleta de lixo – O Magma inclui um método para estimar a fragmentação no armazenamento de objetos estruturado em logs e calcular com precisão a fragmentação do disco. Isso é usado para calcular o tamanho do lixo por segmento de log, o que aciona compactações quando a fragmentação atinge um limite de 50%.

Um aspecto fundamental da arquitetura Magma é o armazenamento de objetos estruturado em log, que armazena documentos em um log segmentado somente de anexação. O armazenamento estruturado em log mantém um índice que permite a consulta de um documento por seqno (número de sequência). O armazenamento de objetos contém arquivos de segmento de log que são organizados sequencialmente usando um log em crescimento com uma cauda para aceitar gravações recebidas (consulte o diagrama de arquitetura do armazenamento de objetos Magma abaixo). A thread em segundo plano anexa as mutações de documento ao log da cauda, com cada documento recebendo um seqno exclusivo. 

Magma object store architecture
Arquitetura de armazenamento de objetos Magma

 

Embora o log possa conter múltiplas versões de documentos imutáveis com a mesma chave, as versões mais antigas de documentos tornam-se obsoletas quando novas versões são anexadas. As operações de leitura sempre leem a versão mais recente, portanto, quando uma busca de chave é realizada, a versão mais recente do documento é retornada. Eventualmente, os registros obsoletos são removidos do armazenamento e um processo separado de coleta de lixo é usado para recuperar espaço.

Resumo de Desempenho

O Magma teve seu desempenho testado em comparação com o RocksDB e o Couchstore. A avaliação focou na vazão (throughput), ampliação de escrita e de espaço para várias cargas de trabalho do Yahoo! Cloud Serving Benchmark (YCSB) com dados grandes demais para caber na memória. Durante duas rodadas de testes, as conclusões foram:

Rodada 1

  • O Magma é 1,77x mais rápido e tem 3,38x menos amplificação de escrita do que o RocksDB
  • O Magma é 36x mais rápido e tem 5x menos amplificação de escrita do que o Couchstore

Rodada 2

  • O Magma é 1,25x mais rápido e tem 2,36x menos amplificação de gravação do que o RocksDB
  • Magma é 21x mais rápido e tem 3,37x menos ampliação de escrita que o Couchstore

Conclusão

Por meio das melhorias de eficiência no Magma, a densidade de dados em máquina única suportada pelo Couchbase Server foi multiplicada por 3,3 e a exigência de memória por 10, o que reduziu o custo total de propriedade (TCO) em até 10 vezes. Os resultados da avaliação de desempenho mostraram que o Magma superou os mecanismos Couchstore e RocksDB em cargas de trabalho YCSB com uso intensivo de gravação, com conjuntos de dados grandes demais para a memória.

Para saber mais sobre o mecanismo de armazenamento de documentos de próxima geração, confira o seguinte artigo: Magma: Um mecanismo de armazenamento de alta densidade de dados usado no Couchbase. Obrigado por reservar um tempo para entender por que o Magma É o mecanismo de armazenamento de documentos de nova geração!

 

Compartilhe este artigo

Autor

Deixe um comentário

Pronto para começar com o Couchbase Capella?

Começar a construir

Confira nosso portal para desenvolvedores para explorar o NoSQL, navegar por recursos e começar com tutoriais.

Use o Capella free

Coloque a mão na massa com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Quer saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.