Megjelent a beágyazott libmdbx 0.13 adatbázis-kezelő rendszer.

Megjelent a libmdbx 0.13.1 (MDBX) könyvtár kiadása, amely egy nagy teljesítményű, kompakt, beágyazott kulcs-érték adatbázis. A libmdbx kódja az Apache 2.0 licenc alatt kerül forgalomba. Támogatottak minden aktuális operációs rendszer és architektúra, valamint az orosz Elbrusz 2000. A libmdbx-hez egy fejlett API érhető el C++ nyelven, valamint a közreműködők által támogatott kötések a Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno és Scala nyelvekhez.

Történelmileg a libmdbx a LMDB adatbázis mélyreható újragondolása, amely megbízhatóságban, képességekben és teljesítményben felülmúlja elődjét. Az LMDB-hez képest a libmdbx nagy hangsúlyt fektet a kód minőségére, az API stabil működésére, a tesztelésre és az automatikus ellenőrzésekre. Egy adatbázis-struktúra integritásának ellenőrzésére szolgáló segédprogram is rendelkezésre áll, amely bizonyos helyreállítási lehetőségeket is biztosít. Technológiailag a libmdbx ACID, szigorú változás-sorozatolás és blokkolás nélküli olvasás támogatását nyújtja, lineáris skálázódással a CPU magok felett. A program automatikus tömörítése és az adatbázis méretének automatikus kezelése, valamint a tartományok szerinti lekérdezések becslésének lehetősége is biztosított.

Főbb változások:

  • A kód licencének módosítása OpenLDAP Public License-ről Apache 2.0-ra.
  • A kurzor API-jának bővítése kényelmesebb és nyilvánvalóbb pozicionáló műveletekkel az <, =, > feltételek alapján, mind a kulcsok, mind a kulcs-érték párok esetén. Újdonságként bevezetve a mdbx_cursor_unbind() és mdbx_txn_release_all_cursors() funkciók, amelyek rugalmas kurzor kezelést tesznek lehetővé újrahasználati forgatókönyvekben a költségek csökkentésére. A mdbx_cursor_scan() és mdbx_cursor_scan_from() funkciók a táblák szkennelésére használhatók funkcionális predikátumokkal, csökkentve a kapcsolódó költségeket.
  • A kurzorok újragondolása a viselkedés egységesítése, a kód rendezettsége és az elágazások, valamint a gépi műveletek számának csökkentése érdekében.
  • A mdbx_chk eszköz funkcionalitásának áthelyezése a könyvtárba mdbx_env_chk() funkció formájában az adatbázis struktúrájának integritásának ellenőrzésére, beleértve az alkalmazás logikáját is.
  • MDBX_opt_gc_time_limit opció a szomszédos szabad oldalak keresési idejének rugalmasabb ellenőrzésére a garbage collection (GC) során.
  • Jelentős költségcsökkentés a tranzakciók indításakor, nagy számú DBI-handle esetén, a szolgáltató táblák elemeinek késleltetett/lustálkodásos inicializálásának köszönhetően. Beleértve a ritka DBI-handle készletek támogatásához szükséges mechanizmust, amelyet az MDBX_ENABLE_DBI_SPARSE beállítás vezérel, amely alapértelmezés szerint aktív.
  • A DBI-handlek megnyitásának költségeinek csökkentése. Beleértve a késleltetett felszabadítás és a zárolások használata nélküli gyors nyitási útvonal támogatási mechanizmusát, amelyet az MDBX_ENABLE_DBI_LOCKFREE beállítás vezérel, amely alapértelmezés szerint aktív.
  • A „parkolás” támogatása az olvasó tranzakciók leválasztásával, hogy lehetővé tegye a régi MVCC-képek újrafeldolgozását és megakadályozza a szemétfeldolgozás szüneteltetéséből adódó problémákat. A parkolási és leválasztási mechanizmus egyaránt kiegészíti és könnyebbé teszi a Handle-Slow-Readers visszahívásának alternatíváját. A kényelem érdekében a mdbx_txn_park() és a mdbx_txn_unpark() funkciók további argumentumokkal rendelkeznek, amelyek lehetővé teszik a parkolt tranzakciók automatikus „elbontását” és a leválasztott tranzakciók újraindítását. A mdbx_copy eszközhöz a megfelelő -d és -p opciók is hozzáadódtek.
  • A DB nyitott munkakörnyezetének helyreállításának támogatása gyermekfolyamatban a fork ágat/választást követően a mdbx_env_resurrect_after_fork() segítségével.
  • A táblák átnevezésének támogatása a mdbx_dbi_rename() és mdbx_dbi_rename2() segítségével. Új funkcióként bevezetésre került a mdbx_enumerate_tables(), amely lehetővé teszi a névvel ellátott felhasználói táblák információinak megszerzését.
  • Az MDBX_NOSTICKYTHREADS üzemmód az MDBX_NOTLS helyett, amely megkönnyíti az integrációt a könnyű szálakkal/ágaikkal, valamint a tranzakciók multiplexelését az operációs rendszer szálain.
  • Az adatbázis azonosításához UUID került bevezetésre, amely elérhető az MDBX_envinfo struktúra mi_dxbid mezőjében, amelyet a mdbx_env_info_ex() segítségével lehet megszerezni. Lehetővé vált az adatbázis információinak beszerzése anélkül, hogy azt meg kellene nyitni, a mdbx_preopen_snapinfo() segítségével.
  • A callback logolási funkciók támogatása a vprintf() funkcionalitás nélkül, ami jelentősen megkönnyíti a logolás használatát más programozási nyelvekkel.
  • Az API-hoz hozzáadva a mdbx_txn_copy2pathname() és mdbx_txn_copy2fd() funkciókat.
  • A forráskód átszervezése refaktorálással.
  • A „tábla” kifejezés használata a „subDb” helyett.
  • A MDBX_COALESCE és MDBX_NOTLS opciók elavultnak nyilvánítása. Az MDBX_USE_VALGRIND fordítási opció helyettesítése a közkedvelt ENABLE_MEMCHECK-vel.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster