After two months of development release of the library libmdbx 0.9.3 (MDBX) with a high performance, compact embedded key-value database implementation. The libmdbx code is distributed under the license OpenLDAP Public License . libmdbx is a deep revision of DBMS LMDB and, according to the developers, surpasses its progenitor in terms of reliability, feature set and performance. It is declared that libmdbx is up to 20% faster than LMDB in CRUD scripts, and up to 30% faster if you turn off the internal control up to a level comparable to LMDB.
Libmdbx offers ACID , strict change serialization, and non-blocking linear scaling across CPU cores. Libmdbx places great emphasis on code quality, API stability, testing, and automated checks. It supports auto-compactification, automatic control of the database size, a unified database format for 32-bit and 64-bit assemblies, and range query estimation.
A utility for checking the integrity of the database structure is supplied with some recovery options. Since 2016, the project has been funded by Positive Technologies and since 2017 has been used in its products.
Major innovations, improvements and fixes added since the last release:
- Completely redesigned and tested spilling (functional analogue of swapping) to disk of modified database pages in very large transactions;
- Added setting runtime options to the API, which allows you to optimize the engine for specific use cases;
- Improved sorting of internal page lists;
- C11 atomics improved support for architectures with weak memory consistency model . However, some performance degradation was fixed after the release.
- port for FreeBSD is available (by Mahlon E. Smith );
- Bindings available for GoLang (by Alex Charov );
- More than 10 bugs and shortcomings fixed;
- More than 150 changes made in total, ~ 2500 lines removed, ~ 4100 added.