Izdan je ugrađeni DBMS libmdbx 0.13

Objavljen je izdanje biblioteke libmdbx 0.13.1 (MDBX) koja implementira visoko performantnu kompaktnu ugrađenu bazu podataka tipa ključ-vrednost. Kod libmdbx se distribuira pod Apache 2.0 licencom. Podržani su svi aktuelni operativni sistemi i arhitekture, kao i ruski Elbrus 2000. Za libmdbx je dostupno razvijeno API za C++, kao i podržane veze za jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Historijski, libmdbx je duboka prerada DBMS-a LMDB i nadmašuje svog predka u pouzdanosti, spektrom mogućnosti i performansama. U usporedbi s LMDB, libmdbx pridaje veliku pažnju kvaliteti koda, stabilnom radu API-ja, testiranju i automatskim provjerama. Nudi se alat za provjeru cjelovitosti strukture Baze podataka s nekim mogućnostima oporavka. Tehnološki, libmdbx nudi ACID, strogu serijalizaciju promjena i neblokirajuće čitanje s linearno skalabilnim procesorima.

Glavne promjene:

  • Promena licence za kod sa OpenLDAP Public License na Apache 2.0.
  • Proširenje API-a kursorima sa pogodnijim i očiglednijim operacijama pozicioniranja prema uslovima <, =, > kako za ključeve, tako i za parove ključ-vrednost. Dodate su funkcije mdbx_cursor_unbind() i mdbx_txn_release_all_cursors() za fleksibilno upravljanje kursorima u scenarijima ponovne upotrebe radi smanjenja troškova. Funkcije mdbx_cursor_scan() i mdbx_cursor_scan_from() za skeniranje tabela korišćenjem funkcionalnog predikata i smanjenjem pratećih troškova.
  • Redizajn kursorima za unifikaciju ponašanja, regulisanje koda i smanjenje broja razgranata i mašinskih operacija.
  • Premestiti funkcionalnost alata mdbx_chk unutar biblioteke u obliku funkcije mdbx_env_chk() za proveru integriteta strukture Baze podataka, uključujući uključivanje logike aplikacije.
  • Opcija MDBX_opt_gc_time_limit za fleksibilniju kontrolu vremena trošenog na pretragu sekvenci susednih slobodnih stranica u GC.
  • Značajno smanjenje troškova pokretanja transakcija u scenarijima sa velikim brojem DBI handlers, zahvaljujući odloženoj/lenjivoj inicijalizaciji elemenata pomoćnih tabela. Uključujući mehanizam podrške za razređene skupove DBI handlera, upravljan opcijom kompilacije MDBX_ENABLE_DBI_SPARSE, koja je uključena po defaultu.
  • Smanjenje troškova otvaranja DBI handlera. Uključujući mehanizam odloženog oslobađanja i podrške brzog otvaranja bez korišćenja zaključavanja, upravljan opcijom kompilacije MDBX_ENABLE_DBI_LOCKFREE, koja je uključena po defaultu.
  • Podrška za „parkiranje“ čitajućih transakcija uz njihovo uklanjanje radi obrade starih MVCC-snimaka i sprječavanje problema uzrokovanih pauzom u obradi smeća. Mehanizam parkiranja i uklanjanja parkiranih transakcija služi kao dopuna i jednostavnija alternativna opcija za povratni poziv Handle-Slow-Readers. Za praktičnost, funkcije mdbx_txn_park() i mdbx_txn_unpark() imaju dodatne argumente koji omogućuju zahtjev za automatskim „odparkiranjem“ i ponovnim pokretanjem uklonjenih transakcija. U alat mdbx_copy dodane su odgovarajuće opcije -d i -p.
  • Podrška za vraćanje otvorenog radnog okruženja baze podataka u dječjem procesu nakon grananja/razdvajanja procesa putem mdbx_env_resurrect_after_fork().
  • Podrška za preimenovanje tablica putem mdbx_dbi_rename() i mdbx_dbi_rename2(). Dodana funkcija mdbx_enumerate_tables() za dobivanje informacija o imenovanim korisničkim tablicama.
  • Način rada MDBX_NOSTICKYTHREADS umjesto MDBX_NOTLS radi pojednostavljenja integracije s laganim nitima/multiplexiranjem njih zajedno s transakcijama osnovnog operativnog sustava.
  • Za identifikaciju baze podataka dodan je UUID dostupan u polju mi_dxbid strukture MDBX_envinfo, dobivenoj putem mdbx_env_info_ex(). Implementirano je dobivanje informacija o bazi podataka bez njenog otvaranja putem mdbx_preopen_snapinfo().
  • Podrška za funkcije dnevničkog poziva bez funkcionalnosti vprintf(), što znatno olakšava korištenje dnevničkog zapisa u vezama s drugim programskim jezicima.
  • Dodavanje funkcija u API mdbx_txn_copy2pathname() i mdbx_txn_copy2fd().
  • Restrukturiranje izvornog koda uz refaktoriranje.
  • Korištenje termina „tablica“ umjesto „subDb“.
  • Objavljivanje opcija MDBX_COALESCE i MDBX_NOTLS kao zastarjelih. Zamjena opcije za izgradnju MDBX_USE_VALGRIND u općeprihvaćenu ENABLE_MEMCHECK.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster