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.

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!

Deixe um comentário
Você precisa fazer o login para publicar um comentário.