Release of high-performance embedded DBMS LIBMDBX 0.10.4 and LIBFPTA 0.3.9

took place Library release LIBMDBX 0.10.4 (MDBX) with the implementation of a high-performance compact embedded key-value class database, and the associated library Libfpta 0.3.9 (FPTA), implementing on top of MDBX table presentation of data with secondary and composite indices. Both libraries apply under licenses approved OSI . All current operating systems and architecture are supported, including Russian Elbrus.

Historically libmdbx is a deep processing DBMS LMDB and Superior to its progenitor for reliability, a set of possibilities and performance. In comparison with LMDB, in libmdbx, much attention is paid to the quality of code, stable operation of the API, testing and automatic checks. Supplied utility checks for the integrity of the database structure with some recovery capabilities.

Technologically LIBMDBX offers ACID, strict serialization of changes and non-blocking reading with linear scaling over the CPU kernels. AutoComatification is supported, automatic control of the database size, estimation of the range of samples in ranges (Range Query Estimation). Since 2016, projects are funded by the company Positive Technologies and C 2017 used in Her products .

For libmdbx Offered C ++ API , as well as supported by enthusiastic Trips to Rust, Haskell, Python, Nodejs, Ruby, Go, Nim. For LIBFPTA, only Description API In the form of the header file C / C ++.

Main innovations, refinement and corrections added after the previous news from May 9:

  • Provided Opportunity Reproducible assemblies.
  • eliminated error due to which with a very rare coating of circumstances during the fixation of the transaction could occur / hanging. The problem has been identified by Positive TECNOLOGIES specialists with internal testing of own products.
  • Modified tests and expanded test scenarios to check all attainable non-isomorphic states of the page of pages and contents GC inside the database.
  • in C ++ API is fixed excess “noExcept”, added additional overloads for the “Cursor :: Erase () method”, the implementation of buffers Relinted from using “STD :: STRING” to ensure alignment (relevant for Clang LibstDC ++).
  • eliminated regression

/Media reports.