a versão 0.9.1 da biblioteca (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 .
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 .
A biblioteca libmdbx não é apenas um «fork», mas um descendente radicalmente reestruturado — um SGBD embutido transacional do tipo «chave-valor» baseado em sem , 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 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 , 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):
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 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 .
- Mais de uma dezena de erros e imperfeições foram corrigidos (veja ).
- 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, , , , e .
- Uma versão preliminar da API C++ foi apresentada em .
- A documentação embutida foi formatada em Doxygen e a geração automática .
- 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 .
Fonte: opennet.ru
