Ilmuvõetud libmdbx 0.13.2 (MDBX) väljund sisaldab kõrge jõudlusega kompaktset võtme-väärtus andmebaasi. libmdbx kood on välja antud Apache 2.0 litsentsi alusel. Toetatakse kõiki kaasaegseid operatsioonisüsteeme ja arhitektuure, sealhulgas Venemaa Elbrus 2000. libmdbx pakub arendatud API-d C++-le ning on entusiastide toel saadaval ka Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ja Scala keeles.
Ajalooliselt on libmdbx LMDB andmebaasi sügav töötlemine, ületades oma eelkäijat usaldusväärsuse, võimaluste ja jõudluse poolest. LMDB-ga võrreldes pööratakse libmdbx-is suurt tähelepanu koodi kvaliteedile, API stabiilsele toimimisele, testimisele ja automaatsetele kontrollidele. Pakutakse andmebaasi struktuuri terviklikkuse kontrollimise utiliiti, millel on mõned taastamisvõimalused. Tehnoloogiliselt pakub libmdbx ACID-i, ranget muudatuste serialiseerimist ja blokeerimata lugemist, millega saab lineaarset koormuse hajutamist CPU tuumade vahel. Toetatakse automaatset kompaktsifitseerimist, automaatset andmebaasi suuruse haldamist ja valikute mahtude hindamist vahemike järgi (range query estimation).
Peamised muudatused:
- GC uuendamine on kiirenenud lehekülgede loendite tagastamisel/paigutamisel keerulistes stsenaariumites. Varem välja lülitatud katsekorrektuuri režiim on täiustatud ja aktiveeritud. See on oluliselt parandanud konvergentsi (vähendada katsete arvu) ning kõrvaldanud vea, mis põhjustas ‘silmuseni’ jõudmise tehingute fikseerimisel (MDBX_PROBLEM vea tagastamisel) harvades spetsiifilistes tingimustes.
- CMake'i kogumiskoodides on lisatud C23 standard.
- Lisatud T-makrosid paarisfunktsioonide char/wchar_t jaoks.
- C++ API-sse on lisatud toetamine pesakuti kirjutamise tehingutele.
- On the second edition of the semantic versioning specification ('Semantic Versioning 2') has been accomplished, and version information export to VERSION.json has been provided.
- To ensure reproducibility of builds, support for the environment variable SOURCE_DATE_EPOCH has been added. Support for MDBX_BUILD_TIMESTAMP is preserved, and this variable takes precedence.
- The ability to specify additional information about the libmdbx build through the MDBX_BUILD_METADATA option has been added. The specified information is now simply included inside the library as the value of mdbx_build.metadata, and will also be used in package formation, etc., in the future.
- Error logging returned from the API has been added. Now it is sufficient to set the logging level to MDBX_LOG_DEBUG (for logging errors excluding MDBX_NOTFOUND) or MDBX_LOG_TRACE (for logging all errors including MDBX_RESULT_TRUE).
- Behavior change:
- The method mdbx::cursor::get_multiple_samelength() has been added and mdbx::txn::put_multiple_samelength() has been renamed.
- For the consistency of the C++ API, the key value is now also returned when performing the MDBX_GET_MULTIPLE operation.
- For size constants mdbx::env::geometry, the base type has been changed from unsigned size_t to signed intptr_t.
- Valik ntdll kasutamise kasuks C++ API asemel teostatakse nüüd ainult juhul, kui C++ API on selgelt välja lülitatud.
- Tagatud on mälu vabastamine tagasi kõrvale lükatud / katkestatud lugemise tehingute eest, mis edastatakse mdbx_txn_commit(). API kokkulepe nõuab, et sellised tehingud vabastataks mdbx_txn_abort() kaudu, mille tõttu mdbx_txn_commit() tagastab neid juhtudel, hävitamata ise tehingud. See viis mälu leketeni rakendustes esinevate vigade tõttu, mis sundis käitumist muutma.
- Kasutatakse makrot __deprecated_enum, kui see on määratletud.
- CMake kaudu ehitamisel valitakse C keele standard nüüd CMAKE_C_STANDARD arvesse võttes.
Allikas: opennet.ru
