Izdanje kompaktnog ugrađenog DBMS-a libmdbx 0.9.1

Pušten na slobodu biblioteka verzija 0.9.1 libmdbx (MDBX) implementacija visokoučinkovite, kompaktne ugrađene baze podataka ključ-vrijednost. Libmdbx kod se distribuira pod licencom OpenLDAP javna licenca.

Trenutna verzija je kompromis između namjere izdavanja dugoročne stabilne verzije 1.0 s potpunom podrškom za C++ i nevoljkosti odgađanja izdanja zbog nepripremljenosti za zamrzavanje novog C++ API-ja. Predstavljeno izdanje rezultat je 9 mjeseci rada usmjerenog na stabilizaciju knjižnice i poboljšanje njezine upotrebljivosti, a uključuje i preliminarnu verziju C++ API.

Biblioteka libmdbx nije samo "fork", već radikalno redizajniran potomak LMDB — transakcijski ugrađeni DBMS klase "ključ-vrijednost" na temelju drvo B+ bez proaktivno bilježenje, koji omogućuje procesima s više niti da rade konkurentno i učinkovito s lokalno dijeljenom (ne-mrežnom) bazom podataka bez namjenskog poslužiteljskog procesa. libmdbx u osnovi širi se sposobnosti svog pretka, dok istovremeno eliminira ili ublažava nedostatke. U isto vrijeme, prema programerima, libmdbx je malo brži i znatno pouzdaniji od LMDB-a.

libmdbx predlaže ACID, stroga serijalizacija promjena i neblokirajuće čitanje s linearnim skaliranjem preko CPU jezgri. Rezultati testiranja performansi (slanje paralelnih zahtjeva za čitanje/pretraživanje u 1-2-4-8 niti na CPU i7-4600U s 2 fizičke jezgre u 4-nitnom HyperThread modu):

Izdanje kompaktnog ugrađenog DBMS-a libmdbx 0.9.1

Najvažnije razlike između MDBX i LMDB:

  • U osnovi, više se pažnje posvećuje kvaliteti koda, dosljednosti API-ja, testiranju i automatskim provjerama.
  • Znatno više kontrole tijekom rada, od provjere parametara do interne revizije struktura baze podataka.
  • Auto-kompaktifikacija i automatsko upravljanje veličinom baze podataka.
  • Jedinstveni format baze podataka za 32-bitne i 64-bitne sklopove.
  • Procjena volumena uzorka po rasponima (procjena upita raspona).
  • Podrška za dvostruko duže ključeve i veličinu stranice baze podataka koju može odabrati korisnik.
  • Uslužni program za provjeru integriteta strukture baze podataka s nekim mogućnostima oporavka.

Glavne inovacije i poboljšanja nakon prethodne vijesti s uvođenjem verzije 0.5 u siječnju 2020.:

  • Izrađen je otvoreni sustav za brzu podršku i odgovore na pitanja. Telegram grupa.
  • Otklonjeno je više od desetak grešaka i nedostataka (vidi. dnevnik promjena).
  • Ispravljeno je mnogo tipfelera i pravopisnih pogrešaka, te su napravljena brojna kozmetička poboljšanja.
  • Testni scenariji su prošireni.
  • Podrška za iOS, Android, buildroot, musl, uClibc, WSL1 и Vino.
  • C++ API pregled objavljen u jedna datoteka zaglavlja.
  • Ugrađena dokumentacija u Doxygen formatu i automatsko generiranje Online dokumentacija.
  • Omogućeno je automatsko generiranje arhiva s amalgamiranim izvornim tekstovima.
  • Dodana podrška za pripremu transakcija i kursora, korisničkih konteksta za transakcije i kursora.
  • Implementirane su dodatne metode za kontrolu referentnog integriteta u MVCC snimkama B+stabla.
  • Dodana podrška za provjeru MVCC snimke baze podataka, dostupnoj putem bilo koje meta stranice s mogućnošću prebacivanja za oporavak.
  • Implementirana podrška za ponovno otvaranje baze podataka iz jednog procesa u svrhu testiranja itd.
  • Implementirana automatska obrada opcije MDBX_NOSUBDIR prilikom otvaranja baze podataka.
  • Dodane funkcije za generiranje cjelobrojnih ključeva iz vrijednosti s pomičnim zarezom i JavaScript "univerzalnih" brojeva.
  • Ukupno je napravljeno 430 promjena koje su utjecale na 93 datoteke, dodano je više od 25 tisuća redaka, više od 8.5 tisuća redaka je izbrisano.

Naknadni razvoj libmdbx-a usredotočit će se na konačni C++ API, daljnju stabilizaciju osnovnog koda, poboljšanje upotrebljivosti biblioteke i pakiranje za popularne distribucije Linuxa. Među predloženim poboljšanjima vrijedi istaknuti podršku za ključeve u formatu MessagePack.

Izvor: opennet.ru

Dodajte komentar