Lanzamento do DBMS integrado compacto libmdbx 0.9.1

Lanzado versión da biblioteca 0.9.1 libmdbx (MDBX) dunha base de datos de clave-valor integrada compacta e de alto rendemento. O código libmdbx distribúese baixo unha licenza Licenza pública OpenLDAP.

A versión actual é un compromiso entre a intención de lanzar unha versión 1.0 estable a longo prazo con compatibilidade total con C++ e a reticencia a atrasar os lanzamentos debido á falta de preparación para conxelar a nova API de C++. A versión presentada é o resultado de 9 meses de traballo destinado a estabilizar a biblioteca e mellorar a súa usabilidade, e tamén inclúe unha versión preliminar API C++.

A biblioteca libmdbx non é só un "garfo", senón un descendente radicalmente redeseñado LMDB — DBMS transaccional incorporado da clase "valor-clave" baseado en árbore B+ sen rexistro proactivo, que permite que os procesos multiprocesos funcionen de forma competitiva e eficiente cunha base de datos compartida localmente (que non sexa de rede) sen un proceso de servidor dedicado. libmdbx fundamentalmente expande capacidades do seu antepasado, ao mesmo tempo que elimina ou mitiga as desvantaxes. Ao mesmo tempo, segundo os desenvolvedores, libmdbx é un pouco máis rápido e significativamente máis fiable que LMDB.

suxire libmdbx ÁCIDO, serialización estrita de cambios e lectura sen bloqueo con escalado lineal nos núcleos da CPU. Resultados das probas de rendemento (enviando solicitudes de lectura/busca paralelas en 1-2-4-8 fíos nunha CPU i7-4600U con 2 núcleos físicos en modo HyperThread de 4 fíos):

Lanzamento do DBMS integrado compacto libmdbx 0.9.1

As diferenzas máis importantes entre MDBX e LMDB:

  • Fundamentalmente, préstase máis atención á calidade do código, á coherencia da API, ás probas e ás comprobacións automáticas.
  • Un control significativamente maior durante a operación, desde a comprobación de parámetros ata a auditoría interna das estruturas de bases de datos.
  • Compactación automática e xestión automática do tamaño da base de datos.
  • Un único formato de base de datos para conxuntos de 32 e 64 bits.
  • Estimación de volumes de mostra por intervalos (estimación de consulta de intervalos).
  • Soporte para teclas dúas veces máis longas e tamaño de páxina de base de datos seleccionable polo usuario.
  • Unha utilidade para comprobar a integridade da estrutura da base de datos con algunhas capacidades de recuperación.

Principais innovacións e melloras despois noticias anteriores coa introdución da versión 0.5 en xaneiro de 2020:

  • Creouse un sistema aberto para recibir asistencia e respostas rápidas ás preguntas. Grupo Telegram.
  • Elimináronse máis dunha ducia de erros e deficiencias (ver. rexistro de cambios).
  • Corrixíronse moitos erros tipográficos e ortográficos e fixéronse numerosas melloras cosméticas.
  • Ampliáronse os escenarios de proba.
  • Soporte para iOS, Android, buildroot, musl, uClibc, WSL1 и Viño.
  • Vista previa da API de C++ lanzada en un ficheiro de cabeceira.
  • Documentación integrada en formato Doxygen e xeración automática Documentación en liña.
  • Ofrécese a xeración automática de arquivos con textos fonte amalgamados.
  • Engadido soporte para preparar transaccións e cursores, contextos de usuario para transaccións e cursores.
  • Implementáronse métodos adicionais para controlar a integridade referencial nas instantáneas MVCC de árbore B+.
  • Engadido soporte para comprobar unha instantánea MVCC da base de datos, accesible a través de calquera metapáxina coa posibilidade de cambiar para a recuperación.
  • Soporte implementado para reabrir a base de datos desde un proceso para probas, etc.
  • Implementouse o procesamento automático da opción MDBX_NOSUBDIR ao abrir unha base de datos.
  • Engadíronse funcións para xerar claves enteiras a partir de valores de coma flotante e números "universais" de JavaScript.
  • En total, realizáronse 430 modificacións que afectan a 93 ficheiros, engadíronse máis de 25 mil liñas, elimináronse máis de 8.5 mil liñas.

O desenvolvemento posterior de libmdbx centrarase na API final de C++, unha maior estabilización do código base, mellora da usabilidade da biblioteca e empaquetado para distribucións populares de Linux. Entre as melloras propostas, cabe destacar o soporte para as claves no formato Paquete de mensaxes.

Fonte: opennet.ru

Engadir un comentario