Valkey 8.1, um fork do Redis DBMS da Amazon, Google, Oracle e Ericsson, foi publicado

Ocorreu o lançamento do Valkey 8.1 DBMS, um fork do Redis DBMS após sua transição para uma licença proprietária. O projeto está sendo desenvolvido em uma plataforma neutra sob os auspícios da Linux Foundation com a participação de desenvolvedores de empresas como Amazon, Google, Oracle, Ericsson e Snap. Madelyn Olson, antiga mantenedora do Redis, juntou-se ao desenvolvimento do Valkey. O código do projeto foi escrito em C e distribuído sob a licença BSD. Suporta Linux, macOS, OpenBSD, NetBSD e FreeBSD.

A partir da versão 7.4, o Redis passou a usar as licenças Redis Source Available License v2 (RSALv2) e Server Side Public License v1 (SSPLv1), que discriminam certas categorias de usuários e não permitem que elas sejam consideradas abertas ou gratuitas. Ambas as licenças são semelhantes em seus objetivos, e as diferenças são que a licença SSPL é baseada na licença copyleft AGPLv3, enquanto a licença RSAL é baseada na licença permissiva BSD. A licença RSAL permite que você use, modifique, distribua e integre o código em aplicativos, exceto quando esses aplicativos são comerciais ou usados ​​para fornecer serviços pagos gerenciados. A licença SSPL também contém um requisito para entregar sob a mesma licença não apenas o código do aplicativo em si, mas também o código-fonte de todos os componentes envolvidos no fornecimento do serviço de nuvem.

Valkey e Redis fornecem funções para armazenar dados no formato chave/valor, com suporte estendido para formatos de dados estruturados, como listas, hashes e conjuntos, além da capacidade de execução em segundo plano. servidor Scripts de manipulação baseados em Lua. O banco de dados é armazenado na memória e sincronizado com a versão em disco ou refletido no log de alterações do disco, garantindo a integridade dos dados em caso de falha. Transações, modo de publicação/assinatura, comandos de incremento/decremento, operações de listagem e conjunto (união, interseção), renomeação de chaves, replicação mestre-escravo, seleções múltiplas e funções de classificação são suportados.

Na nova versão:

  • A implementação da tabela de hash usada tanto no armazenamento principal de dados de chave-valor quanto no armazenamento de dados dos tipos Hash, Set e Sorted Set foi completamente reescrita. A nova versão apresenta redução no consumo de memória e uma redução no número de operações aleatórias de acesso à memória. Para cada par chave-valor sem TTL (limite de tempo de vida do objeto), o consumo de memória é reduzido em 20 bytes, e com TTL - em 30 bytes. A taxa de transferência aumentou em aproximadamente 10% ao operar no modo de E/S não multithread.
  • Adicionado suporte para pré-busca ao executar uma operação de iteração de chave, como ao executar o comando KEYS ou ao enviar todas as chaves para um novo nó em um cluster durante a replicação. Graças a essa otimização, foi possível acelerar a busca de chaves em 3.5 vezes, pois ao passar para o processamento da próxima chave, ela agora é carregada no cache da CPU.
  • A transição de componentes para processamento de entrada/saída multithread continuou. Foi adicionada a capacidade de usar fluxos de E/S separados ao negociar conexões TLS, o que aumentou o desempenho de aceitação de novas conexões em três vezes. As chamadas para as funções SSL_pending() e ERR_clear_error() também foram movidas para threads separados, o que resultou em um aumento na taxa de transferência ao executar operações SET em 10% e operações GET em 22%.
  • Eficiência de replicação aprimorada. A remoção de cálculos de soma de verificação redundantes na replicação sem disco melhorou o desempenho da sincronização completa em 18% com TLS habilitado. A sobrecarga das operações de cópia em gravação foi reduzida em 47%.
  • A implementação de listas ordenadas (tipo de dados "sorted set") foi otimizada, e a execução do comando ZRANK ficou 45% mais rápida. A implementação da instrução ZADD usa instruções SIMD.
  • Consumo de memória reduzido ao contar elementos únicos usando o tipo probabilístico hyperloglog (agora requer apenas 12 KB de memória, independentemente do tamanho dos dados). Ao habilitar instruções AVX2 em sistemas x86, o desempenho das operações PFMERGE e PFCOUNT em tipos de dados hyperloglog aumentou em até 12x, e as operações BITCOUNT em até 5x.
  • O sistema de desfragmentação ativo foi modificado para evitar atrasos maiores que 1 milissegundo. O tempo de cada ciclo de desfragmentação foi reduzido para 500 microssegundos. Foi adicionado um mecanismo (anti-starvation) para evitar que operações como o ciclo de desfragmentação sejam atrasadas por comandos de longa execução.
  • Adicionadas novas configurações para formatação de logs e exibição de tempo nos logs. Adicionado o modo COMMANDLOG para refletir grandes solicitações e respostas no log (semelhante a salvar solicitações de longa duração).
  • O comando "LATENCY LATEST" usado para analisar latências foi atualizado para incluir métricas adicionais que fornecem informações sobre o número de latências registradas e picos de latência.
  • Adicionado suporte para a operação "SET IFEQ", que é executada se o valor especificado na comparação corresponder ao valor da chave atual.
  • Adicionado suporte para criação de novos mecanismos de script como módulos, permitindo suporte para outras linguagens além de Lua.
  • Novos módulos introduzidos:
    • O Search Module é um mecanismo de busca de similaridade vetorial otimizado para tarefas de aprendizado de máquina que exigem baixa latência e alto rendimento. O módulo é fornecido pelo Google.
    • O módulo JSON é uma implementação do tipo de dados JSON que permite acessar partes de documentos JSON sem processá-los totalmente no lado do cliente. O módulo é fornecido pela AWS.
    • O Módulo de Filtro Bloom Probabilístico é uma implementação de filtros Bloom, uma estrutura probabilística para verificação de associação de conjuntos que permite falsos positivos para um elemento ausente, mas exclui a omissão de um elemento existente. O módulo é fornecido pela AWS.

Fonte: opennet.ru

Adicionar um comentário