Lançamento do SGBD embutido libmdbx 0.13.3

Foi publicada a versão 0.13.3 da biblioteca libmdbx (MDBX), que implementa um banco de dados compactado embutido de alto desempenho do tipo chave-valor. O código do libmdbx é distribuído sob a licença Apache 2.0. Suporta todos os sistemas operacionais e arquiteturas atuais, assim como o russo Elbrus 2000. Para o libmdbx, é oferecida uma API avançada para C++, além de bindings suportados por entusiastas para as linguagens Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno e Scala.

Historicamente, o libmdbx é uma reconstrução profunda do SGBD LMDB e supera seu predecessor em confiabilidade, conjunto de funcionalidades e desempenho. Em comparação com o LMDB, o libmdbx dedica grande atenção à qualidade do código, ao funcionamento estável da API, ao teste e a verificações automáticas. É fornecida uma ferramenta de verificação de integridade da estrutura do banco de dados com algumas capacidades de recuperação. Tecnicamente, o libmdbx oferece ACID, estrita serialização de mudanças e leitura não bloqueante com escalonamento linear por núcleos de CPU. Suporta auto compactação, gestão automática do tamanho do banco de dados e estimativa de volume de seleções por intervalos (estimar consulta de intervalo).

Principais mudanças:

  • A versão 0.13.x recebeu o status de estável. O desenvolvimento da versão 0.14.x foi iniciado.
  • Foi adicionada a função mdbx_cursor_count_ex() na API C, que permite obter tanto o número de múltiplos valores correspondentes à chave atual quanto informações sobre a árvore aninhada que armazena esses valores.
  • Foi adicionado o método mdbx::txn::make_broken() na API C++, semelhante ao mdbx_txn_break().
  • Nos utilitários mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load e mdbx_stat, foi implementado o registro de erros, avisos e mensagens importantes do libmdbx.
  • Mudança de comportamento:
    • Ao habilitar o perfilamento do coletor de lixo (compilação com a opção MDBX_ENABLE_PROFGC=ON), agora são contabilizados os custos de tempo de CPU para mesclar listas de páginas, ou seja, para a função pnl_merge().
    • No utilitário de testes, o valor do modo de dados foi renomeado de data.dups para data.multi.
    • Foi aprimorado o controle do comprimento da chave dentro de cursor_seek().
    • Se o usuário não especificar um valor com mdbx_env_set_option(MDBX_opt_txn_dp_limit), o limite de dirty-pages será ajustado no início de cada transação de escrita não aninhada, com base na quantidade de RAM disponível e no tamanho do banco de dados.
    • No modo MDBX_NOSTICKYTHREADS, é permitido o commit/abort de transações aninhadas de qualquer thread.
    • Ao tentar iniciar transações aninhadas no modo MDBX_WRITEMAP, é feito o registro e retornada a mensagem de erro MDBX_INCOMPATIBLE.
    • Na API C++, os construtores/inicializadores e métodos relacionados à formação da geometria do banco de dados, por padrão, utilizam apenas valores default.
    • Dentro de mdbx_env_set_geometry(), foram aprimoradas heurísticas para ajustar os parâmetros de geometria do banco de dados solicitados pelo usuário como "padrão".
  • Correções:
    • Removido o retrocesso que impedia o desbloqueio do mutex ao tentar fechar novamente o descritor dbi, incluindo ao tentar fechar explicitamente o descritor após remover a tabela associada.
    • Eliminado o retrocesso do estado do cursor aninhado/dupsort após a inserção de dados no modo MDBX_APPEND.
    • Suporte para obtenção do boot_id ao trabalhar dentro de um contêiner LXC.
    • Corrigido o erro de processamento incorreto ao tentar iniciar uma transação de leitura aninhada. Agora, em tais situações, retorna-se o erro MDBX_EINVAL, uma vez que a aninhamento é suportado apenas para transações de leitura e gravação.
    • Removido o retrocesso SIGSEGV ao acessar um endereço nulo ao operar no modo somente leitura sem usar um arquivo LCK, por exemplo, ao estar com o banco de dados em um dispositivo acessível apenas para leitura.

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