libmdbx 0.10.4 vem com várias melhorias e correções de bugs

O lançamento do bibliotecas da versão 0.10.4 "Libmdbx" no qual, no total, mais de 160 alterações feitas em 57 arquivos, ~ 5000 linhas adicionadas e ~ 2500 removidas. Para aqueles que não estão familiarizados com libmdbx, você deve saber que este é um conjunto de bibliotecas que são uma implementação de um banco de dados integrado compacto e de alto desempenho da classe de valor-chave.

Historicamente, libmdbx é uma reformulação profunda do DBMS LMDB e supera seu antecessor em confiabilidade, conjunto de recursos e desempenho. Comparado ao LMDB, o libmdbx dá muita ênfase à qualidade do código, estabilidade da API, testes e verificações automatizadas. Um utilitário para verificar a integridade da estrutura do banco de dados é fornecido com algumas opções de recuperação.

Tecnologicamente, libmdbx oferece ACID, serialização de mudança estrita e leituras sem bloqueio com escalonamento linear entre os núcleos da CPU. Suporta compactação automática, controle automático de tamanho de banco de dados e estimativa de consulta de classificação. Desde 2016, os projetos são financiados pela Positive Technologies e utilizados em seus produtos desde 2017.

Para libmdbx, uma API C ++ é oferecida, bem como ligações compatíveis com Rust, Haskell, Python, NodeJS, Ruby, Go, Nim entusiastas. Para libfpta, apenas a descrição da API na forma de um arquivo de cabeçalho C / C ++ está disponível publicamente.

Além de suportar Linux, Windows, MacOS, Android, iOS, FreeBSD, DragonFly, Solaris, OpenSolaris, OpenIndiana, NetBSD, OpenBSD e outros sistemas compatíveis POSIX.1-2008.

Principais novos recursos do libmdbx 0.10.4

Nesta nova versão do libmdbx 0.10.4 os desenvolvedores trabalharam para fornecer a capacidade de compilações jogáveis, Além disso, o teste foi aprimorado e os scripts de teste foram estendidos para verificar todos os estados não isomórficos possíveis da árvore da página e o conteúdo do GC no banco de dados.

Na API C ++ corrigida uma vez "noexcept", adicionou sobrecarga extra para o método "cursor :: erase ()", a implementação de buffers é aliviada usando "std :: string" para garantir o alinhamento (atual para CLANG libstdc ++)

Além disso, também é destacado que uma verificação em fases foi realizada com a adição de uma série de verificações para garantir a estabilidade em caso de dano deliberado ao banco de dados.

Por outro lado, destaca-se que a busca pelos componentes do compilador necessários para LTO (otimização do tempo de link) foi aprimorada nos scripts CMake, além de que o número máximo de leitores simultâneos foi aumentado para 32.767 e também o desempenho foi aprimorado ao usar Valgrind e AddressSanitizer.

Com relação à correção de bugs que foram feitos nesta nova versão, são mencionados os seguintes:

  • Corrigido um bug onde, em circunstâncias muito raras, um loop / travamento poderia ocorrer durante a confirmação de uma transação. O problema foi identificado por especialistas da Positive Technologies durante testes internos de seus próprios produtos.
  • Foi corrigida a regressão no algoritmo de derramamento de página suja (despejo seletivo de páginas de banco de dados modificadas) que se manifestava em um erro inesperado raro de MDBX_PROBLEM ao alterar dados em grandes transações.
  • Corrigidos problemas menores de UndefinedBehaviorSanitizer e Coverity Scan.
    Corrigida a verificação de sinalizador interno desatualizado e não utilizado "P_DIRTY" em páginas aninhadas em imagens de banco de dados criadas por versões de bibliotecas antigas.
  • Corrigido o uso recursivo de SRW-lock no Windows ao trabalhar no modo MDBX_NOTLS (sem usar o armazenamento local de thread), geração de bootid fixa em caso de mudança de hora do sistema, detecção aprimorada de WSL1 e WSL2, adicionada a capacidade de abrir um banco de dados Plan 9 montado usando DrvFS.

Finalmente se você estiver interessado em saber mais sobre isso sobre esta nova versão, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.