para la prueba de la segunda versión candidata en las librerías con la implementación de una base de datos embebida de alto rendimiento y compacta de tipo clave-valor. La versión actual (0.5) es un lanzamiento técnico que marca la finalización de cualquier mejora y el inicio de la fase de pruebas finales públicas y estabilización, seguido de la formación del primer lanzamiento completo de la biblioteca. Código libmdbx bajo la licencia OpenLDAP Public License.
La biblioteca MDBX es una bifurcación sustancialmente reformada de — 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 forma concurrente y eficiente con una base de datos localmente compartida (no en red). A su vez, MDBX es más rápido y fiable que LMDB, al tiempo que preserva todas las características clave de su antecesor, como y lecturas no bloqueantes con escalado lineal por núcleos de CPU.
Las diferencias más importantes de MDBX en relación con LMDB son:
- Se presta significativamente más atención a la calidad del código, pruebas y 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 tamaño dos veces mayor y tamaño de página de base de datos seleccionable por el usuario.
El candidato lanzado de libmdbx es el resultado de la decisión tomada en agosto de 2019 de separar los proyectos MDBX y MithrilDB. En este sentido, se decidió eliminar (racionalmente) la máxima deuda técnica y estabilizar la biblioteca. De hecho, se ha logrado en esta dirección de 2 a 3 veces más de lo que se había estimado y planeado inicialmente:
- Se ha implementado soporte para macOS y plataformas de 'segunda línea': FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. El soporte para AIX y HP-UX puede añadirse según sea necesario.
- Se realizó la sanación del código utilizando Undefined Behavior Sanitizer y Address Sanitizer, se han corregido todas las advertencias al compilar con '-Wpedantic', todas las advertencias del Coverity Static Analyzer, etc.
- Actualización .
- Fusión (amalgama) del código fuente para facilitar la integración.
- Soporte para CMake.
- Soporte para transacciones anidadas.
- Uso de bootid para determinar el hecho de reinicio del sistema operativo (parada sucia de la base de datos).
- Cálculo total de páginas actualizadas/antiguas y información ampliada sobre transacciones.
- Opción MDBX_ACCEDE para conectarse a una base de datos ya abierta en modo compatible.
- Uso cuando estén disponibles.
- Copia de seguridad en caliente en pipe.
- Algoritmo especializado de ordenamiento interno optimizado (de 2 a 3 veces más rápido que 'qsort()' y hasta 30% más rápido que 'std::sort()').
- Se ha aumentado la longitud máxima de la clave.
- Gestión automática de lectura anticipada (estrategia de almacenamiento en caché de la base de datos en memoria).
- Compacción automática más agresiva y rápida.
- Estrategia de fusión de páginas B+ más óptima.
- Control de sistemas de archivos no locales (NFS, Samba, etc.) para prevenir daños en la base de datos por uso incorrecto.
- Ampliado el conjunto de pruebas.
El desarrollo de la 'próxima' versión de libmdbx continuará en el marco de un proyecto separado. , mientras que la dirección de desarrollo de la 'versión actual' de MDBX está orientada a congelar el conjunto de capacidades y estabilización. Esta decisión se tomó por tres razones:
- Incompatibilidad total: para implementar todas las funcionalidades planeadas en MithrilDB se requiere un formato de archivos de base de datos diferente (incompatible) y una API diferente (incompatible).
- Nuevo código fuente: el código fuente de MithrilDB garantiza independencia de licencia respecto a LMDB, y se planea publicar el proyecto bajo una licencia diferente (aprobada por licencia Apache 2.0, y no ).
- La separación permite evitar confusiones potenciales, aportar más claridad y asegurar la independencia del desarrollo de los proyectos.
MithrilDB, al igual que MDBX, también se basa en y también se destacará por su altísima rendimiento, eliminando varios defectos fundamentales de MDBX y LMDB. En particular, se eliminará el problema de las 'lecturas largas', que se manifiesta como 'inflación' de la base de datos debido a que la recolección de basura se bloquea por transacciones de lectura prolongadas. Entre las nuevas características de MithrilDB destacan:
- Soporte para la colocación de bases de datos en varios soportes heterogéneos: HDD, SSD y memoria no volátil.
- Estrategias óptimas para datos 'valiosos' y 'poco valiosos', para datos 'calientes', 'templados' y 'fríos'.
- Uso de Merkle tree para el control de integridad de bases de datos.
- Uso opcional de WAL y rendimiento significativamente mayor en escenarios con escritura intensiva y garantías de integridad de datos.
- Registro de datos en disco de manera perezosa y reactiva.
Fuente: opennet.ru
