Po petih letih razvoja je bil objavljen drugi kandidat za izdajo libmdbx 1.0

Na voljo za testiranje drugega kandidata za knjižnične izdaje libmdbx z implementacijo visoko zmogljive, kompaktne vdelane baze podatkov ključ-vrednost. Trenutna različica (0.5) je tehnična izdaja, ki označuje zaključek morebitnih izboljšav in prehod v fazo javnega končnega testiranja in stabilizacije, s kasnejšim oblikovanjem prve polne izdaje knjižnice. koda libmdbx distributer licenciran pod javno licenco OpenLDAP.

Knjižnica MDBX je bistveno spremenjena razcepka iz LMDB — transakcijski vgrajeni DBMS razreda "ključ-vrednost", ki temelji na drevo B+ brez proaktivno beleženje, ki večnitnim procesom omogoča konkurenčno in učinkovito delo z lokalno (ne omrežno) bazo podatkov. MDBX pa je hitrejši in zanesljivejši od LMDB, hkrati pa ohranja vse ključne lastnosti svojega prednika, kot je npr. KISLINA in neblokirno branje z linearnim skaliranjem po jedrih CPE.

Najpomembnejše razlike med MDBX in LMDB:

  • V bistvu je več pozornosti namenjene kakovosti kode, testiranju in avtomatskim preverjanjem.
  • Bistveno več nadzora med delovanjem, od preverjanja parametrov do notranje revizije struktur baze podatkov.
  • Samodejna kompaktizacija in samodejno upravljanje velikosti baze podatkov.
  • En sam format zbirke podatkov za 32-bitne in 64-bitne sklope.
  • Ocena vzorčnih količin po razponih (poizvedbena ocena razpona).
  • Podpora za ključe, dvakrat večje od palačink, in velikost strani baze podatkov, ki jo lahko izbere uporabnik.

Kandidat za izdajo libmdbx je rezultat odločitve, sprejete avgusta 2019, o ločitvi projektov MDBX in MithrilDB. Hkrati se je libmdbx odločil odpraviti (racionalno) največji tehnični dolg in stabilizirati knjižnico. Dejansko je bilo v začrtani smeri narejenega 2-3 krat več, kot je bilo sprva ocenjeno in načrtovano:

  • Izvedena je bila podpora za macOS in platforme drugega nivoja: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Po potrebi je mogoče dodati podporo za AIX in HP-UX.
  • Koda je bila razčiščena z razkužilnikom Undefined Behavior Sanitizer in Address Sanitizer, vsa opozorila pri gradnji z »-Wpedantic«, vsa opozorila Coverity Static Analyzer itd. so bila odstranjena.
  • Nadgradnja Opisi API-jev.
  • Spajanje (združevanje) izvorne kode za lažjo vdelavo.
  • Podpora za CMake.
  • Podpora za ugnezdene transakcije.
  • Uporaba bootida za ugotavljanje, ali se je OS znova zagnal (umazana zaustavitev baze podatkov).
  • Štetje posodobljenih/starih strani od konca do konca in razširjene informacije o transakcijah.
  • Možnost MDBX_ACCEDE za povezavo z že odprto zbirko podatkov v združljivem načinu.
  • Uporaba OFD ključavnice glede na njihovo razpoložljivost.
  • Vroča varnostna kopija v cevi.
  • Specializiran optimiziran notranji algoritem za razvrščanje (do 2-3 krat hitrejši od »qsort()« in do 30 % hitrejši od »std::sort()«).
  • Povečana največja dolžina ključa.
  • Samodejni nadzor vnaprejšnjega branja (strategija predpomnjenja datotek baze podatkov v pomnilniku).
  • Agresivnejše in hitrejše samodejno zbijanje.
  • Bolj optimalna strategija za združevanje drevesnih strani B+.
  • Nadzor nad nelokalnimi datotečnimi sistemi (NFS, Samba itd.), da se prepreči poškodba baze podatkov, če se nepravilno uporablja.
  • Razširjena zbirka testov.

Razvoj "naslednje" različice libmdbx se bo nadaljeval kot ločen projekt MithrilDB, medtem ko je razvojni vektor "trenutne" različice MDBX usmerjen v zamrznitev nabora funkcij in stabilizacijo. Ta odločitev je bila sprejeta iz treh razlogov:

  • Popolna nezdružljivost: MithrilDB zahteva drugačno (nezdružljivo) obliko datoteke baze podatkov in drugačen (nezdružljiv) API za izvajanje vseh načrtovanih funkcij.
  • Nova izvorna koda: izvorna koda MithrilDB je licenčno neodvisna od LMDB, sam projekt pa naj bi bil objavljen pod drugo licenco (odobril ALI ČE Licenca Apache 2.0, ne Javna licenca OpenLDAP).
  • Ločitev preprečuje morebitno zmedo, vnaša več gotovosti in zagotavlja neodvisno pot za projekte.

MithrilDB, tako kot MDBX, prav tako temelji na drevo B+ zanj pa bo značilna tudi izjemno visoka zmogljivost, hkrati pa bo odpravljena vrsta temeljnih pomanjkljivosti MDBX in LMDB. Zlasti bo odpravljen problem "dolgih branj", ki se kaže kot "nabrekanje" baze podatkov zaradi dejstva, da je obdelava smeti blokirana s transakcijami dolgega branja. Nove funkcije MithrilDB vključujejo:

  • Podpora za postavitev baze podatkov na več heterogenih medijev: HDD, SSD in obstojni pomnilnik.
  • Optimalne strategije za »dragocene« in »majhne« podatke, za »vroče«, »tople« in »hladne« podatke.
  • Uporaba drevesa Merkle za spremljanje integritete baze podatkov.
  • Izbirna uporaba WAL in bistveno izboljšana zmogljivost v scenarijih z intenzivnim pisanjem z jamstvi za celovitost podatkov.
  • Leno dohitevanje prenosa podatkov na diske.

Vir: opennet.ru

Dodaj komentar