Release av den kompakta inbäddade DBMS libmdbx 0.9.1

Släppte biblioteksversion 0.9.1 libmdbx (MDBX) implementering av en högpresterande, kompakt inbäddad nyckel-värdesdatabas. Libmdbx-koden distribueras under en licens OpenLDAP Public License.

Den nuvarande versionen är en kompromiss mellan avsikten att släppa en långsiktigt stabil version 1.0 med fullt C++-stöd och oviljan att fördröja releaser på grund av oförbereddhet för att frysa det nya C++ API. Den presenterade utgåvan är resultatet av 9 månaders arbete som syftar till att stabilisera biblioteket och förbättra dess användbarhet, och innehåller även en preliminär version C++ API.

Libmdbx-biblioteket är inte bara en "gaffel", utan en radikalt omdesignad ättling LMDB — Transaktionellt inbäddat DBMS av klassen "nyckel-värde" baserat på träd B+ без proaktiv loggning, som tillåter flertrådiga processer att arbeta konkurrenskraftigt och effektivt med en lokalt delad (icke-nätverks)databas utan en dedikerad serverprocess. libmdbx i grunden expanderar dess förfaders förmågor, samtidigt som de eliminerar eller mildrar nackdelarna. Samtidigt är libmdbx enligt utvecklarna lite snabbare och betydligt mer tillförlitlig än LMDB.

libmdbx föreslår SYRA, strikt serialisering av ändringar och icke-blockerande läsning med linjär skalning över CPU-kärnor. Prestandatestresultat (sänder parallella läs-/sökningsbegäranden i 1-2-4-8 trådar på en CPU i7-4600U med 2 fysiska kärnor i 4-tråds HyperThread-läge):

Release av den kompakta inbäddade DBMS libmdbx 0.9.1

De viktigaste skillnaderna mellan MDBX och LMDB:

  • I grunden ägnas mer uppmärksamhet åt kodkvalitet, API-konsistens, testning och automatiska kontroller.
  • Betydligt mer kontroll under drift, från kontroll av parametrar till internrevision av databasstrukturer.
  • Automatisk komprimering och automatisk databasstorlekshantering.
  • Ett enda databasformat för 32-bitars och 64-bitars sammanställningar.
  • Uppskattning av provvolymer efter intervall (uppskattning av intervallfråga).
  • Stöd för dubbelt så långa nycklar och användarvalbar databas sidstorlek.
  • Ett verktyg för att kontrollera databasstrukturens integritet med vissa återställningsmöjligheter.

Huvudsakliga innovationer och förbättringar efter tidigare nyheter med introduktionen av version 0.5 i januari 2020:

  • Ett öppet system har skapats för snabb support och svar på frågor. Telegram grupp.
  • Mer än ett dussin fel och brister har eliminerats (se. ändra logg).
  • Många stavfel och stavfel har åtgärdats, och många kosmetiska förbättringar har gjorts.
  • Testscenarier har utökats.
  • Stöd för iOS, Android, byggrot, musl, uClibc, WSL1 и Vin.
  • C++ API-förhandsvisning släpptes i en huvudfil.
  • Inbyggd dokumentation i Doxygen-format och automatisk generering Online dokumentation.
  • Automatisk generering av arkiv med sammanslagna källtexter tillhandahålls.
  • Lagt till stöd för att förbereda transaktioner och markörer, användarkontexter för transaktioner och markörer.
  • Ytterligare metoder har implementerats för att kontrollera referensintegritet i B+tree MVCC ögonblicksbilder.
  • Lade till stöd för att kontrollera en MVCC-ögonblicksbild av databasen, tillgänglig via vilken metasida som helst med möjlighet att byta för återställning.
  • Implementerat stöd för återöppning av databasen från en process för teständamål mm.
  • Implementerade automatisk bearbetning av MDBX_NOSUBDIR-alternativet vid öppning av en databas.
  • Tillagda funktioner för att generera heltalsnycklar från flyttalsvärden och JavaScript "universala" tal.
  • Totalt gjordes 430 ändringar som påverkade 93 filer, mer än 25 tusen rader lades till, mer än 8.5 tusen rader raderades.

Efterföljande utveckling av libmdbx kommer att fokusera på det slutliga C++ API:et, ytterligare stabilisering av baskoden, förbättring av bibliotekets användbarhet och paketering för populära Linux-distributioner. Bland de föreslagna förbättringarna är det värt att notera stöd för nycklar i formatet MessagePack.

Källa: opennet.ru

Lägg en kommentar