Lançamento do SGBD incorporado libmdbx 0.13.6

Foi lançada a versão da biblioteca libmdbx 0.13.6 (MDBX) com a implementação de um banco de dados embutido de alto desempenho e compacto, na classe chave-valor. O código do libmdbx é distribuído sob a licença Apache 2.0. Suporta todos os sistemas operacionais e arquiteturas atuais, além do russo Elbrus 2000. Para o libmdbx, uma API desenvolvida para C++ é proposta, assim como bindings suportados por entusiastas para as linguagens Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno e Scala. Entre os projetos que utilizam o libmdbx, destacam-se Isar, Erigon e Reth, além dos desenvolvimentos das empresas StarkWare e Positive Technologies.

Historicamente, o libmdbx é uma reengenharia profunda do SGBD LMDB e supera seu predecessor em confiabilidade, conjunto de recursos e desempenho. Comparado ao LMDB, o libmdbx dá ênfase especial à qualidade do código, operação estável da API, testes e verificações automáticas. Uma ferramenta de verificação de integridade da estrutura do banco de dados é fornecida com algumas funcionalidades de recuperação. Tecnologicamente, o libmdbx oferece ACID, serialização rigorosa de alterações e leitura não bloqueante com escalabilidade linear em núcleos de CPU. Suporte é dado a compactação automática, gestão automática do tamanho do banco de dados e avaliação de exceções em consultas por intervalo (range query estimation).

Principais mudanças:

  • Mudança de comportamento: Ao não ser possível desvincular o cursor de sua transação atual, a função mdbx_cursor_bind() agora retorna MDBX_EINVAL em vez de MDBX_BAD_TXN.
  • Para evitar problemas potenciais, o uso de copy_file_range() foi desativado em núcleos Linux 5.3 a 5.18.
  • A exceção std::invalid_argument agora é gerada com a mensagem explícita MDBX_EINVAL.
  • Regressão corrigida ao usar cursores para DBI=0 (também conhecido como GC/FreeDB) em transações de leitura.
  • Regressão corrigida que causava o erro EAGAIN ao copiar o banco de dados para NFS e CIFS/SMB.
  • Durante o aperfeiçoamento/desenvolvimento da API na função de cópia, foi adicionida a captura de bloqueio de arquivos tanto através de fcntl() quanto de flock(). No entanto, dependendo da versão do núcleo local, da versão remota do NFS e das opções de montagem, isso poderia resultar na devolução do erro POSIX EAGAIN (11 na maioria das plataformas, incluindo Linux). servidor Corrigido um erro em merge/rebase dentro de mdbx_txn_release_all_cursors_ex(), que poderia levar a erros inesperados subsequentes como MDBX_EBADSIGN e vazamentos de memória.
  • A verificação assert foi corrigida no caminho de conclusão das transações aninhadas.
  • Corrigida a possibilidade de retorno de um erro inesperado MDBX_BUSY da mdbx_txn_lock(dont_wait=false).
  • Corrigida a possibilidade de retorno de um erro inesperado MDBX_BUSY de mdbx_txn_lock(dont_wait=false).
  • Para compatibilidade com o GCC 15.x no modo C23, a ordem de especificação dos atributos das funções foi alterada.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster