versión 0.9.1 de la biblioteca (MDBX) con una implementación de una base de datos embebida de alto rendimiento y compacta de tipo clave-valor. El código de libmdbx se distribuye bajo la licencia .
La versión actual es un compromiso entre la intención de lanzar una versión estable a largo plazo 1.0 con soporte completo para C++ y el deseo de no retrasar lanzamientos debido a la falta de preparación para congelar una nueva API de C++. La versión presentada es el resultado de 9 meses de trabajo orientado a estabilizar la biblioteca y mejorar su usabilidad, además incluye una versión preliminar .
La biblioteca libmdbx no es simplemente un 'fork', sino un descendiente radicalmente reestructurado — un sistema de gestión de bases de datos embebidas transaccional de tipo 'clave-valor' basado en sin , que permite a los procesos multihilo trabajar de manera concurrente y eficiente con una base de datos localmente compartida (no en red) sin un proceso servidor dedicado. Libmdbx es fundamentalmente capaz de añadir características a su antecesor, al mismo tiempo que elimina o mitiga deficiencias. Según sus desarrolladores, libmdbx es algo más rápido y significativamente más fiable que LMDB.
libmdbx ofrece , una estricta serialización de cambios y lectura no bloqueante con escalado lineal en los núcleos de CPU. Los resultados de las pruebas de rendimiento (envío de solicitudes paralelas de lectura/búsqueda en 1-2-4-8 hilos en un CPU i7-4600U con 2 núcleos físicos en modo de 4 hilos HyperThread):
Las diferencias más importantes de MDBX en relación con LMDB son:
- Se presta fundamentalmente más atención a la calidad del código, a la `no caídas` de la API, las pruebas y las verificaciones automáticas.
- Hay un control significativamente mayor durante el funcionamiento, desde la verificación de parámetros hasta la auditoría interna de las estructuras de la base de datos.
- Auto-compacción y gestión automática del tamaño de la base de datos.
- Un formato único de base de datos para compilaciones de 32 y 64 bits.
- Evaluación del volumen de consultas por rangos (range query estimation).
- Soporte para claves de hasta el doble de longitud 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.
Las principales novedades y mejoras desde con la presentación de la versión 0.5 en enero de 2020:
- Se ha creado un grupo abierto en Telegram .
- Se han corregido más de una docena de errores y fallos (ver. ).
- Se han corregido numerosos errores tipográficos y ortográficos, múltiples mejoras cosméticas.
- Se han ampliado los escenarios de prueba.
- Se ha implementado soporte para iOS, Android, , , , y .
- Se ha presentado una versión preliminar de la API C++ en .
- Se ha preparado documentación integrada en formato Doxygen y generación automática .
- Se ha habilitado la formación automática de archivos comprimidos con textos de origen amalgamados.
- Se ha añadido soporte para la preparación de transacciones y cursores, así como contextos personalizados para transacciones y cursores.
- Se han implementado métodos adicionales para controlar la integridad referencial en instantáneas B+tree de MVCC.
- Se ha añadido soporte para la verificación de la instantánea MVCC de la base de datos, disponible a través de cualquier meta-página con la posibilidad de alternar para la restauración.
- Se ha implementado soporte para la reapertura de la base de datos desde un solo proceso con fines de prueba, etc.
- Se ha implementado el manejo automático de la opción MDBX_NOSUBDIR al abrir la base de datos.
- Se han añadido funciones para la creación de claves enteras a partir de valores de punto flotante y números 'universales' de JavaScript.
- En total, se han realizado 430 cambios que afectan a 93 archivos, se han añadido más de 25,000 líneas y se han eliminado más de 8,500 líneas.
El desarrollo posterior de libmdbx se centrará en la creación de la API final de C++, la estabilización del código base, la mejora de la usabilidad de la biblioteca, así como la creación de paquetes para distribuciones populares de Linux. Las mejoras previstas incluyen el soporte para claves en formato .
Fuente: opennet.ru
