Lançamento do DBMS incorporado de alto desempenho libmdbx 0.11.3

A biblioteca libmdbx 0.11.3 (MDBX) foi lançada com a implementação de um banco de dados de valores-chave integrado e compacto de alto desempenho. O código libmdbx está licenciado sob a Licença Pública OpenLDAP. Todos os sistemas operacionais e arquiteturas atuais são suportados, assim como o russo Elbrus 2000. No final de 2021, libmdbx é usado como backend de armazenamento nos dois clientes Ethereum mais rápidos - Erigon e o novo “Shark”, que, de acordo com os disponíveis informações, é o cliente Ethereum de maior desempenho.

Historicamente, libmdbx é uma reformulação profunda do SGBD LMDB e supera seu ancestral 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. É fornecido um utilitário para verificar a integridade da estrutura do banco de dados com alguns recursos de recuperação.

Em termos de tecnologia, libmdbx oferece ACID, forte serialização de alterações e leituras sem bloqueio com escala linear entre núcleos de CPU. Há suporte para compactação automática, gerenciamento automático de tamanho de banco de dados e estimativa de consulta de intervalo. Desde 2016, o projeto é financiado pela Positive Technologies e é utilizado em seus produtos desde 2017.

libmdbx oferece uma API C++, bem como ligações de linguagem suportadas por entusiastas para Rust, Haskell, Python, NodeJS, Ruby, Go e Nim.

Principais inovações, melhorias e correções adicionadas desde a notícia anterior de 11 de outubro:

  • A API C++ é considerada pronta para uso.
  • A atualização dos dados do GC ao realizar grandes transações foi significativamente acelerada, o que é especialmente importante ao usar libmdbx no ecossistema Ethereum.
  • A assinatura interna do formato do banco de dados foi alterada para suportar atualização automática, que é totalmente transparente para os usuários. Isso permite eliminar mensagens falso-positivas sobre corrupção de banco de dados quando versões desatualizadas da biblioteca são usadas para ler transações registradas por versões atuais.
  • Adicionadas funções mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() e mdbx_env_get_syncbytes(). Adicionado suporte para a operação MDBX_SET_UPPERBOUND.
  • Todos os avisos ao compilar com todos os compiladores suportados nos modos C++ 11/14/17/20 foram eliminados. A compatibilidade com compiladores legados é garantida: clang a partir de 3.9, gcc a partir de 4.8, incluindo assembly usando cdevtoolset-9 para CentOS/RHEL 7.
  • Corrigida a possibilidade de conflito de metapágina após alternar manualmente para uma metapágina específica usando o utilitário mdbx_chk.
  • Corrigido erro MDBX_PROBLEM inesperado retornado ao substituir metapáginas herdadas.
  • Corrigido o retorno de MDBX_NOTFOUND em caso de correspondência inexata ao processar uma solicitação MDBX_GET_BOTH.
  • Corrigido erro de compilação no Linux na ausência de arquivos de cabeçalho com descrições de interfaces com o kernel.
  • Corrigido um conflito entre o sinalizador interno MDBX_SHRINK_ALLOWED e a opção MDBX_ACCEDE.
  • Várias verificações de afirmação desnecessárias foram eliminadas.
  • Corrigido retorno inesperado de MDBX_RESULT_TRUE da função mdbx_env_set_option().
  • No total, mais de 90 alterações foram feitas em 25 arquivos, ~1300 linhas foram adicionadas, ~600 foram excluídas.

Fonte: opennet.ru

Adicionar um comentário