Lanzamiento del DBMS integrado compacto libmdbx 0.9.1

Liberado versión de la biblioteca 0.9.1 libmdbx (MDBX) implementación de una base de datos clave-valor integrada compacta y de alto rendimiento. El código libmdbx se distribuye bajo una licencia. Licencia pública OpenLDAP.

La versión actual es un compromiso entre la intención de lanzar una versión 1.0 estable a largo plazo con soporte completo para C++ y la renuencia a retrasar los lanzamientos debido a la falta de preparación para congelar la nueva API de C++. La versión presentada es el resultado de 9 meses de trabajo destinado a estabilizar la biblioteca y mejorar su usabilidad, y también incluye una versión preliminar. API de C ++.

La biblioteca libmdbx no es sólo una “bifurcación”, sino un descendiente radicalmente rediseñado LMDB — DBMS integrado transaccional de la clase “clave-valor” basado en árbol B+ sin registro proactivo, que permite que los procesos multiproceso funcionen de manera competitiva y eficiente con una base de datos compartida localmente (fuera de la red) sin un proceso de servidor dedicado. libmdbx fundamentalmente se expande capacidades de su antecesor, al mismo tiempo que elimina o mitiga desventajas. Al mismo tiempo, según los desarrolladores, libmdbx es un poco más rápido y mucho más fiable que LMDB.

libmdbx sugiere ACID, serialización estricta de cambios y lectura sin bloqueo con escalado lineal en todos los núcleos de la CPU. Resultados de las pruebas de rendimiento (envío de solicitudes de lectura/búsqueda paralelas en 1-2-4-8 subprocesos en una CPU i7-4600U con 2 núcleos físicos en modo HyperThread de 4 subprocesos):

Lanzamiento del DBMS integrado compacto libmdbx 0.9.1

Las diferencias más importantes entre MDBX y LMDB:

  • Básicamente, se presta más atención a la calidad del código, la coherencia de las API, las pruebas y los controles automáticos.
  • Significativamente más control durante la operación, desde la verificación de parámetros hasta la auditoría interna de las estructuras de la base de datos.
  • Autocompactación y gestión automática del tamaño de la base de datos.
  • Un formato de base de datos único para ensamblados de 32 y 64 bits.
  • Estimación de volúmenes de muestra por rangos (estimación de consulta de rango).
  • Soporte para claves dos veces más largas y tamaño de página de base de datos seleccionable por el usuario.
  • Una utilidad para verificar la integridad de la estructura de la base de datos con algunas capacidades de recuperación.

Principales innovaciones y mejoras tras noticias anteriores con la introducción de la versión 0.5 en enero de 2020:

  • Se ha creado un sistema abierto para brindar soporte rápido y respuestas a preguntas. grupo de telegramas.
  • Se han eliminado más de una docena de errores y deficiencias (ver. registro de cambios).
  • Se han corregido muchos errores tipográficos y ortográficos y se han realizado numerosas mejoras cosméticas.
  • Se han ampliado los escenarios de prueba.
  • Soporte para iOS, Android, construirraíz, Musulmán, uClibc, WSL1 и Vino.
  • Vista previa de la API de C++ lanzada en un archivo de encabezado.
  • Documentación incorporada en formato Doxygen y generación automática Documentación en línea.
  • Se proporciona la generación automática de archivos con textos fuente fusionados.
  • Se agregó soporte para preparar transacciones y cursores, contextos de usuario para transacciones y cursores.
  • Se han implementado métodos adicionales para controlar la integridad referencial en instantáneas MVCC del árbol B+.
  • Se agregó soporte para verificar una instantánea MVCC de la base de datos, accesible a través de cualquier metapágina con la capacidad de cambiar para recuperación.
  • Se implementó soporte para reabrir la base de datos de un proceso con fines de prueba, etc.
  • Implementado el procesamiento automático de la opción MDBX_NOSUBDIR al abrir una base de datos.
  • Se agregaron funciones para generar claves enteras a partir de valores de punto flotante y números "universales" de JavaScript.
  • En total, se realizaron 430 cambios que afectaron a 93 archivos, se agregaron más de 25 mil líneas y se eliminaron más de 8.5 mil líneas.

El desarrollo posterior de libmdbx se centrará en la API C++ final, una mayor estabilización del código base, la mejora de la usabilidad de la biblioteca y el empaquetado para distribuciones populares de Linux. Entre las mejoras propuestas, cabe destacar la compatibilidad con claves en el formato Paquete de mensajes.

Fuente: opennet.ru

Añadir un comentario