Lanzamiento del DBMS integrado de alto rendimiento libmdbx 0.11.3

La biblioteca libmdbx 0.11.3 (MDBX) se lanzó con la implementación de una base de datos clave-valor integrada compacta de alto rendimiento. El código libmdbx tiene la licencia pública OpenLDAP. Se admiten todos los sistemas operativos y arquitecturas actuales, así como el Elbrus 2000 ruso. A finales de 2021, libmdbx se utiliza como backend de almacenamiento en los dos clientes Ethereum más rápidos: Erigon y el nuevo "Shark", que, según los datos disponibles. información, es el cliente Ethereum de mayor rendimiento.

Históricamente, libmdbx es un rediseño profundo de LMDB DBMS y supera a su antecesor en términos de confiabilidad, conjunto de funciones y rendimiento. En comparación con LMDB, libmdbx pone mucho énfasis en la calidad del código, la estabilidad de la API, las pruebas y las comprobaciones automáticas. Se proporciona una utilidad para verificar la integridad de la estructura de la base de datos con algunas opciones de recuperación.

En cuanto a la tecnología, libmdbx ofrece ACID, fuerte serialización de cambios y lecturas sin bloqueo con escalado lineal en todos los núcleos de la CPU. Se admiten la compactación automática, la gestión automática del tamaño de la base de datos y la estimación de consultas de rango. Desde 2016, el proyecto ha sido financiado por Positive Technologies y se utiliza en sus productos desde 2017.

libmdbx ofrece una API de C++, así como enlaces de lenguajes compatibles con entusiastas para Rust, Haskell, Python, NodeJS, Ruby, Go y Nim.

Principales innovaciones, mejoras y correcciones añadidas desde la noticia anterior del 11 de octubre:

  • La API de C++ se considera lista para su uso.
  • La actualización de los datos de GC al realizar grandes transacciones se ha acelerado significativamente, lo cual es especialmente importante cuando se utiliza libmdbx en el ecosistema Ethereum.
  • La firma interna del formato de la base de datos se ha cambiado para admitir la actualización automática, que es completamente transparente para los usuarios. Esto le permite eliminar mensajes falsos positivos sobre corrupción de bases de datos cuando se utilizan versiones obsoletas de la biblioteca para leer transacciones registradas por las versiones actuales.
  • Funciones agregadas mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() y mdbx_env_get_syncbytes(). Se agregó soporte para la operación MDBX_SET_UPPERBOUND.
  • Se han eliminado todas las advertencias al compilar con todos los compiladores compatibles en los modos C++ 11/14/17/20. La compatibilidad con compiladores heredados está garantizada: clang a partir de 3.9, gcc a partir de 4.8, incluido el ensamblaje mediante cdevtoolset-9 para CentOS/RHEL 7.
  • Se corrigió la posibilidad de un conflicto de metapágina después de cambiar manualmente a una metapágina específica usando la utilidad mdbx_chk.
  • Se corrigió el error inesperado MDBX_PROBLEM que se devolvía al sobrescribir metapáginas heredadas.
  • Se corrigió la devolución de MDBX_NOTFOUND en caso de una coincidencia inexacta al procesar una solicitud MDBX_GET_BOTH.
  • Se corrigió un error de compilación en Linux en ausencia de archivos de encabezado con descripciones de interfaces con el kernel.
  • Se corrigió un conflicto entre el indicador interno MDBX_SHRINK_ALLOWED y la opción MDBX_ACCEDE.
  • Se han eliminado varias comprobaciones de afirmación innecesarias.
  • Se corrigió el retorno inesperado de MDBX_RESULT_TRUE de la función mdbx_env_set_option().
  • En total, se realizaron más de 90 cambios en 25 archivos, se agregaron ~1300 líneas y se eliminaron ~600.

Fuente: opennet.ru

Añadir un comentario