LIBMDBX 0.12.3 (MDBX) library was released with the implementation of a high-performance compact built-in data database of the key-value. The LIBMDBX code is distributed under the OpenLDAP Public License license. All relevant operating systems and architectures are supported, as well as Russian Elbrus 2000. For LIBMDBX, developed C ++ APIs, as well as bindings supported by enthusiasts to the Rust, Haskell, Python, Nodejs, Ruby, GO, NIM, Deno, Scala.
Historically, Libmdbx is a deep processing DBMDB DBMS and surpasses its ancestor, set of capabilities and performance. Compared to LMDB, LIBMDBX is given great attention to the quality of the code, the stable operation of the API, testing and automatic checks. A utility for checking the integrity of the structure of the database with some recovery possibilities is supplied. Technologically, LibMDBX offers ACID, a strict serialization of changes and non -relaxing reading with linear scaling along the core nuclei. Auto compactification, automatic control of the database, assessment of the volume of samples in ranges (Range Query Estimation) are supported.
The main innovations, improvements and corrections:
- Prefault recording is implemented when highlighting pages for Read-Write display. This leads to a multiple decrease in system costs and a significant increase in performance in the corresponding scenarios of use, when: the size of the database and data volume is significantly larger than RAM; MDBX_WRITEMAP mode is used; Non-meat transactions (many hundreds or thousands of pages are allocated along the transaction).
In MDBX_WRITEMAP mode, the allocation/rejection of the pages leads to the page-Fault and reading the page from the disk, even if the contents of the page are not needed (it will be redundered). This is a consequence of the work of the virtual memory subsystem, and the standard method of treatment through Madv_remove does not work on all FS and usually more expensive than the savings. LIBMDBX now uses a “proactive record” of such pages that on systems with Unified Page Cache leads to “pushing” data, eliminating the need to read from the disk when addressing such a memory page. The new functionality works in consistency with the automatic control of Read-Ahead and the cache of the status of pages in the RAM, through mincore ( ) .
- Added the MDBX_OPT_PREFULT_WRITE_ENABLE option for forced to turn on/off the Prefault-Writing.