The release of the compact embedded database system libmdbx 0.9.1

Released version 0.9.1 of the library libmdbx (MDBX) with an implementation of a high-performance, compact embedded key-value database. The libmdbx code is distributed under the license OpenLDAP Public License..

The current version is a compromise between the intent to release a long-term stable version 1.0 with full C++ support and the reluctance to postpone releases due to the unpreparedness for freezing the new C++ API. The presented release is the result of 9 months of work aimed at stabilizing the library and improving its usability, and also includes a preliminary version C++ API.

The libmdbx library is not just a 'fork,' but a fundamentally redesigned descendant LMDB — a transactional embedded key-value database based on B+ tree without anticipatory journaling, which allows multithreaded processes to work concurrently and efficiently with a locally shared (not networked) database without a dedicated server process. Libmdbx fundamentally expands enhances the capabilities of its predecessor while eliminating or mitigating its shortcomings. At the same time, according to the developers, libmdbx is slightly faster and significantly more reliable than LMDB.

libmdbx offers ACID, strict serialization of changes and non-blocking reading with linear scaling across CPU cores. Performance testing results (sending parallel read/search requests in 1-2-4-8 threads on an i7-4600U CPU with 2 physical cores in 4-thread HyperThreading mode):

The release of the compact embedded database system libmdbx 0.9.1

The most important differences of MDBX compared to LMDB:

  • Principally more attention is paid to code quality, API 'robustness,' testing, and automated checks.
  • Substantially more control during operations, from parameter checks to internal audits of database structures.
  • Auto-compaction and automatic size management of the database.
  • A unified database format for 32-bit and 64-bit builds.
  • Estimation of the volume of samples by ranges.
  • Support for keys twice the length and a user-selectable database page size.
  • A structure integrity check utility for the database with some recovery capabilities.

The main innovations and improvements after the previous news presenting version 0.5 in January 2020:

  • An open group has been created in Telegram for operational support and questions.
  • Over ten bugs and shortcomings have been fixed (see change log).
  • Numerous typos and spelling mistakes have been corrected, along with multiple cosmetic improvements.
  • Test scenarios have been expanded.
  • Support for iOS, Android, buildroot, Musl, uClibc, WSL1 and Wine.
  • A preliminary version of the C++ API has been introduced in a single header file.
  • Built-in documentation has been formatted in Doxygen and automatic generation of Online documentation has been implemented.
  • Automatic archive generation with amalgamated source texts has been implemented.
  • Support for preparing transactions and cursors, along with user contexts for transactions and cursors, has been added.
  • Additional methods for controlling referential integrity in MVCC snapshots of B+tree have been implemented.
  • Support for checking the MVCC snapshot of the database, accessible through any meta-page with the possibility of switching for recovery, has been added.
  • Support for reopening the database from a single process for testing purposes and more has been implemented.
  • Automatic handling of the MDBX_NOSUBDIR option when opening the database has been implemented.
  • Functions for generating integer keys from floating-point values and 'universal' JavaScript numbers have been added.
  • A total of 430 changes affecting 93 files have been made, with over 25,000 lines added and more than 8,500 lines removed.

Future development of libmdbx will focus on finalizing the C++ API, further stabilizing the core code, improving library usability, and creating packages for popular Linux distributions. Notable upcoming enhancements include support for keys in the format MessagePack.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster