Vrystelling van die kompakte ingebedde DBMS libmdbx 0.9.1

Vrygestel biblioteek weergawe 0.9.1 libmdbx (MDBX) implementering van 'n hoë-prestasie, kompakte ingebedde sleutel-waarde databasis. Die libmdbx-kode word onder 'n lisensie versprei OpenLDAP publieke lisensie.

Die huidige weergawe is 'n kompromie tussen die voorneme om 'n langtermyn-stabiele weergawe 1.0 vry te stel met volledige C++-ondersteuning en die onwilligheid om vrystellings te vertraag as gevolg van onvoorbereidheid om die nuwe C++ API te bevries. Die aangebied vrystelling is die resultaat van 9 maande se werk wat daarop gemik is om die biblioteek te stabiliseer en die bruikbaarheid daarvan te verbeter, en sluit ook 'n voorlopige weergawe in C++ API.

Die libmdbx-biblioteek is nie net 'n "vurk" nie, maar 'n radikaal herontwerpte afstammeling LMDB - transaksionele ingebedde DBBS van die "sleutel-waarde" klas gebaseer op boom B+ sonder proaktiewe aanteken, wat multi-draad prosesse toelaat om mededingend en doeltreffend te werk met 'n plaaslik gedeelde (nie-netwerk) databasis sonder 'n toegewyde bediener proses. libmdbx fundamenteel brei uit vermoëns van sy voorouer, terwyl dit terselfdertyd nadele uitskakel of versag. Terselfdertyd, volgens die ontwikkelaars, is libmdbx 'n bietjie vinniger en aansienlik meer betroubaar as LMDB.

libmdbx stel voor ACID, streng serialisering van veranderinge en nie-blokkerende lees met lineêre skaal oor SVE-kerns. Prestasietoetsresultate (stuur parallelle lees-/soekversoeke in 1-2-4-8 drade op 'n CPU i7-4600U met 2 fisiese kerne in 4-draad HyperThread-modus):

Vrystelling van die kompakte ingebedde DBMS libmdbx 0.9.1

Die belangrikste verskille tussen MDBX en LMDB:

  • Fundamenteel word meer aandag gegee aan kodekwaliteit, API-konsekwentheid, toetsing en outomatiese kontrole.
  • Aansienlik meer beheer tydens operasie, van kontrolering van parameters tot interne oudit van databasisstrukture.
  • Outo-kompaktifisering en outomatiese databasisgroottebestuur.
  • 'n Enkele databasisformaat vir 32-bis en 64-bis samestellings.
  • Skatting van monstervolumes volgens reekse (reeksnavraagskatting).
  • Ondersteuning vir twee keer so lang sleutels en gebruiker-kiesbare databasis bladsy grootte.
  • 'n Nut om die integriteit van die databasisstruktuur na te gaan met sommige herstelvermoëns.

Belangrikste innovasies en verbeterings na vorige nuus met die bekendstelling van weergawe 0.5 in Januarie 2020:

  • 'n Oop stelsel is geskep vir vinnige ondersteuning en antwoorde op vrae. Telegram groep.
  • Meer as 'n dosyn foute en tekortkominge is uitgeskakel (sien. veranderingslogboek).
  • Baie tik- en spelfoute is reggestel, en talle kosmetiese verbeterings is aangebring.
  • Toetsscenario's is uitgebrei.
  • Ondersteuning vir iOS, Android, bouwortel, musl, uClibc, WSL1 и wyn.
  • C++ API-voorskou vrygestel in een koplêer.
  • Ingeboude dokumentasie in Doxygen-formaat en outomatiese generering Aanlyn dokumentasie.
  • Outomatiese generering van argiewe met saamgevoegde brontekste word verskaf.
  • Bygevoeg ondersteuning vir die voorbereiding van transaksies en wysers, gebruikerskontekste vir transaksies en wysers.
  • Bykomende metodes is geïmplementeer om verwysingsintegriteit in B+boom MVCC-kiekies te beheer.
  • Bygevoeg ondersteuning vir die nagaan van 'n MVCC momentopname van die databasis, toeganklik deur enige meta bladsy met die vermoë om oor te skakel vir herstel.
  • Geïmplementeerde ondersteuning vir die heropening van die databasis vanaf een proses vir toetsdoeleindes, ens.
  • Implementeer outomatiese verwerking van die MDBX_NOSUBDIR opsie wanneer 'n databasis oopgemaak word.
  • Bygevoeg funksies vir die generering van heelgetalsleutels uit swaaipuntwaardes en JavaScript "universele" nommers.
  • In totaal is 430 veranderinge aangebring wat 93 lêers beïnvloed, meer as 25 duisend reëls is bygevoeg, meer as 8.5 duisend reëls is uitgevee.

Die daaropvolgende ontwikkeling van libmdbx sal fokus op die finale C++ API, verdere stabilisering van die basiskode, die verbetering van die bruikbaarheid van die biblioteek en verpakking vir gewilde Linux-verspreidings. Onder die voorgestelde verbeterings is dit die moeite werd om te let op ondersteuning vir sleutels in die formaat MessagePack.

Bron: opennet.ru

Voeg 'n opmerking