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 do blog apresenta uma breve visão geral do novo mecanismo de armazenamento Magma, fornece uma comparação de cada mecanismo e resume os resultados do referências de desempenho.
O Couchstore é um mecanismo de armazenamento maduro que é otimizado para alto desempenho com grandes conjuntos de dados, especialmente aqueles que cabem na memória. O tamanho mínimo do bucket para o Couchstore é de 100 MB. Ele é ideal para casos de uso de cache e situações em que a compactação de dados não é o principal fator decisivo.
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 é transcendente para casos de uso em que o acesso ao disco é fundamental. O Magma é otimizado para ser executado em 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 comparativa que resume cada mecanismo de armazenamento.
Comparação entre Couchstore e Magma
Critérios | Loja de sofás | Magma |
Cota mínima de memória do bucket | 100 MB | 1 GB |
Relação mínima entre memória e dados | 10% | 1% |
Máximo de dados por nó | 3TB | 10 TB |
Otimização do tamanho dos dados | Melhor 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 da velocidade de acesso ao disco |
Armazenar e acessar | Acesse dados de até ~ 1 TB | Armazenar e acessar vários terabytes de dados |
Hardware | Pode ser executado em hardware de baixo custo | Preferencialmente, hardware de qualidade |
Serviços com suporte | Todos os serviços, incluindo pesquisa de texto completo, eventos e análises, estão disponíveis | Todos os serviços, incluindo pesquisa de texto completo, eventos e análises, estão disponíveis com a versão 7.1.2 GA |
Persistência de dados | A maioria dos dados é acessada a partir do cache de memória | Os aplicativos precisam de grandes quantidades de dados persistentes e duráveis |
Casos de uso | O caso de uso requer principalmente 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 última geração do Couchbase Server. Ele foi projetado com o objetivo de melhorar a densidade dos dados e o desempenho de gravação em cada nó do cluster. Ele atinge esses objetivos separando os dados de índice e de documento para minimizar a amplificação de gravação (WA). A amplificação de gravação está relacionada à gravação de dados no armazenamento de arquivos em que 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 uma 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 aumenta a expectativa de vida dos SSDs, reduzindo o número de ciclos de gravação e apagamento.
Outras metas de design do projeto Magma incluíam:
Compactações simultâneas escalonáveis - A compactação total do banco de dados é uma operação cara. O gerenciamento de um banco de dados de alta densidade requer compactações pequenas, simultâneas e incrementais para recuperar espaço.
Otimização da unidade de estado sólido (SSD) - A E/S aleatória foi minimizada para ocorrer somente durante as operações de pesquisa de pontos. Enquanto os padrões de acesso de E/S de leitura e gravação sequenciais são aproveitados para tirar proveito de toda a largura de banda das SSDs.
Baixo consumo de memória - Os dados de alta densidade diminuem a possibilidade de cache de leitura e gravação. Portanto, o Magma é otimizado para utilizar uma pequena área de memória.
Coleta de lixo - O Magma inclui um método para estimar a fragmentação no armazenamento de objetos estruturados em log e calcular com precisão a fragmentação do disco. Isso é usado para calcular o tamanho do lixo por segmento de registro que aciona as compactações quando a fragmentação atinge um limite de 50%.
Um aspecto importante da arquitetura do Magma é o armazenamento de objetos estruturados em log, que armazena documentos em um log segmentado somente para anexos. 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 crescente com uma cauda para aceitar gravações de entrada (consulte o diagrama de arquitetura do armazenamento de objetos do Magma abaixo). O thread em segundo plano anexa as mutações de documentos ao log de cauda, com cada documento recebendo um segno exclusivo.

Arquitetura do armazenamento de objetos Magma
Embora o registro possa conter várias versões imutáveis de documentos com a mesma chave, as versões mais antigas do documento 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 pesquisa 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 do desempenho
O Magma foi testado quanto ao desempenho em relação ao RocksDB e ao Couchstore. A avaliação se concentrou na taxa de transferência e na amplificação de gravação e 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 as seguintes:
Primeira rodada
-
-
- O Magma é 1,77 vezes mais rápido e tem 3,38 vezes menos amplificação de gravação do que o RocksDB
- O Magma é 36 vezes mais rápido e tem 5 vezes menos amplificação de gravação do que o Couchstore
-
Segunda rodada
-
-
- O Magma é 1,25 vezes mais rápido e tem 2,36 vezes menos amplificação de gravação do que o RocksDB
- O Magma é 21 vezes mais rápido e tem 3,37 vezes menos amplificação de gravação do que o Couchstore
-
Conclusão
Com as melhorias de eficiência no Magma, a densidade de dados de uma única máquina suportada pelo Couchbase Server foi aumentada em 3,3 vezes e o requisito de memória em 10 vezes, 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 do Couchstore e do RocksDB em cargas de trabalho YCSB de gravação pesada com conjuntos de dados muito grandes para a memória.
Para saber mais sobre o mecanismo de armazenamento de documentos de última geração, consulte o documento a seguir: Magma: Um mecanismo de armazenamento de alta densidade de dados usado no Couchbase. Obrigado por dedicar seu tempo para saber por que o Magma É o mecanismo de armazenamento de documentos da próxima geração!