Lançamento do SGBD embutido compacto libmdbx 0.9.1

Lançada a versão 0.9.1 da biblioteca libmdbx (MDBX) com implementação de um banco de dados embutido, compacto e de alto desempenho do tipo chave-valor. O código libmdbx é distribuído sob a licença Licença Pública OpenLDAP.

A versão atual é um compromisso entre a intenção de lançar uma versão estável de longo prazo 1.0 com suporte total a C++ e a relutância em atrasar os lançamentos devido à indecisão sobre a congelamento da nova API C++. Este lançamento é o resultado de 9 meses de trabalho direcionado à estabilização da biblioteca e à melhoria da sua usabilidade, além de incluir uma versão preliminar API C++.

A biblioteca libmdbx não é apenas um «fork», mas um descendente radicalmente reestruturado LMDB — um SGBD embutido transacional do tipo «chave-valor» baseado em árvore B+ sem journaling antecipado, que permite que processos multithreading operem de forma concorrente e eficaz com um banco de dados localmente compartilhado (não em rede) sem um processo servidor dedicado. Libmdbx fundamentalmente expande as capacidades de seu predecessor, enquanto elimina ou atenua deficiências. Nesse sentido, segundo os desenvolvedores, libmdbx é ligeiramente mais rápido e significativamente mais confiável que LMDB.

libmdbx oferece ACID, serialização rigorosa de alterações e leitura não bloqueante com escalonamento linear em núcleos de CPU. Os resultados dos testes de desempenho (envio de consultas paralelas para leitura/busca em 1-2-4-8 threads em um CPU i7-4600U com 2 núcleos físicos em modo 4-thread HyperThread):

Lançamento do SGBD embutido compacto libmdbx 0.9.1

As principais diferenças do MDBX em relação ao LMDB:

  • Maior atenção é dada à qualidade do código, à «resiliência» da API, ao teste e à verificação automática.
  • Controle significativamente maior durante a operação, desde a verificação de parâmetros até a auditoria interna das estruturas do banco de dados.
  • Compactação automática e gerenciamento automático do tamanho do BD.
  • Formato único do BD para compilações de 32 e 64 bits.
  • Estimativa do volume de consultas por intervalos (range query estimation).
  • Suporte a chaves de comprimento dobrado e tamanho de página do BD escolhido pelo usuário.
  • Utilitário de verificação de integridade da estrutura do BD com algumas capacidades de recuperação.

Principais inovações e melhorias após a notícia anterior com a apresentação da versão 0.5 em janeiro de 2020:

  • Um suporte ágil e respostas a perguntas foram criados em um grupo aberto no Telegram.
  • Mais de uma dezena de erros e imperfeições foram corrigidos (veja registro de alterações).
  • Correcções de muitos erros de digitação e ortografia, além de múltimas melhorias cosméticas.
  • Os cenários de teste foram ampliados.
  • Suporte para iOS, Android foi implementado, buildroot, Musl, uClibc, WSL1 e Wine.
  • Uma versão preliminar da API C++ foi apresentada em um único arquivo de cabeçalho.
  • A documentação embutida foi formatada em Doxygen e a geração automática da documentação online.
  • Foi garantida a formação automática de arquivos com textos fonte amalgamados.
  • Foi adicionada a preparação de transações e cursores, contextos personalizados para transações e cursores.
  • Métodos adicionais de controle de integridade referencial em snapshots MVCC de B+tree foram implementados.
  • Suporte para verificação de snapshot MVCC do banco de dados, disponível através de qualquer meta-página com opção de alternância para recuperação foi adicionado.
  • Suporte para reabertura do banco de dados a partir de um processo para testes, entre outros, foi implementado.
  • Foi implementado o tratamento automático da opção MDBX_NOSUBDIR ao abrir o banco de dados.
  • Funções para formar chaves inteiras a partir de valores de ponto flutuante e números "universais" de JavaScript foram adicionadas.
  • No total, foram feitas 430 alterações em 93 arquivos, adicionando mais de 25.000 linhas e removendo mais de 8.500 linhas.

O desenvolvimento posterior da libmdbx se concentrará na formação da API final em C++, estabilização adicional do código base, melhoria da usabilidade da biblioteca, além da formação de pacotes para distribuições populares do Linux. Entre as melhorias propostas, destaca-se o suporte a chaves no formato MessagePack.

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