Frigivelse af det kompakte indlejrede DBMS libmdbx 0.9.1

Udgivet biblioteksversion 0.9.1 libmdbx (MDBX) implementering af en højtydende, kompakt indlejret nøgleværdidatabase. Libmdbx-koden distribueres under en licens OpenLDAP offentlig licens.

Den nuværende version er et kompromis mellem intentionen om at frigive en langsigtet stabil version 1.0 med fuld C++-understøttelse og modvilje mod at forsinke udgivelser på grund af uforberedthed til at fryse den nye C++ API. Den præsenterede udgivelse er resultatet af 9 måneders arbejde med det formål at stabilisere biblioteket og forbedre dets anvendelighed, og inkluderer også en foreløbig version C++ API.

Libmdbx-biblioteket er ikke bare en "gaffel", men en radikalt redesignet efterkommer LMDB — transaktionelt indlejret DBMS af klassen "nøgleværdi" baseret på træ B+ без proaktiv logning, som tillader flertrådede processer at arbejde konkurrencedygtigt og effektivt med en lokalt delt (ikke-netværk) database uden en dedikeret serverproces. libmdbx grundlæggende udvider sig dens forfaders evner, og samtidig eliminere eller afbøde ulemper. Samtidig er libmdbx ifølge udviklerne lidt hurtigere og væsentligt mere pålidelig end LMDB.

libmdbx foreslår ACID, streng serialisering af ændringer og ikke-blokerende læsning med lineær skalering på tværs af CPU-kerner. Resultater af præstationstest (afsendelse af parallelle læse-/søgningsanmodninger i 1-2-4-8 tråde på en CPU i7-4600U med 2 fysiske kerner i 4-tråds HyperThread-tilstand):

Frigivelse af det kompakte indlejrede DBMS libmdbx 0.9.1

De vigtigste forskelle mellem MDBX og LMDB:

  • Grundlæggende lægges der mere vægt på kodekvalitet, API-konsistens, test og automatiske kontroller.
  • Betydeligt mere kontrol under drift, fra kontrol af parametre til intern revision af databasestrukturer.
  • Automatisk komprimering og automatisk databasestørrelsesstyring.
  • Et enkelt databaseformat til 32-bit og 64-bit samlinger.
  • Estimering af prøvevolumener efter intervaller (intervallforespørgselsestimering).
  • Understøttelse af dobbelt så lange taster og brugervalgbar databasesidestørrelse.
  • Et værktøj til at kontrollere databasestrukturens integritet med nogle gendannelsesmuligheder.

Vigtigste innovationer og forbedringer efter tidligere nyheder med introduktionen af ​​version 0.5 i januar 2020:

  • Der er skabt et åbent system til hurtig support og svar på spørgsmål. Telegram gruppe.
  • Mere end et dusin fejl og mangler er blevet elimineret (se. ændringslog).
  • En masse slå- og stavefejl er blevet rettet, og der er foretaget adskillige kosmetiske forbedringer.
  • Testscenarier er blevet udvidet.
  • Support til iOS, Android, byggerod, musl, uClibc, WSL1 и Vin.
  • C++ API preview udgivet i én header-fil.
  • Indbygget dokumentation i Doxygen-format og automatisk generering Online dokumentation.
  • Automatisk generering af arkiver med sammenlagte kildetekster leveres.
  • Tilføjet support til forberedelse af transaktioner og markører, brugerkontekster for transaktioner og markører.
  • Yderligere metoder er blevet implementeret til at kontrollere referentiel integritet i B+tree MVCC snapshots.
  • Tilføjet support til kontrol af et MVCC-øjebliksbillede af databasen, tilgængeligt via enhver metaside med mulighed for at skifte til gendannelse.
  • Implementeret support til genåbning af databasen fra én proces til testformål mv.
  • Implementeret automatisk behandling af MDBX_NOSUBDIR muligheden ved åbning af en database.
  • Tilføjede funktioner til generering af heltalsnøgler fra flydende kommaværdier og JavaScript "universelle" tal.
  • I alt blev der foretaget 430 ændringer, der påvirker 93 filer, mere end 25 tusind linjer blev tilføjet, mere end 8.5 tusind linjer blev slettet.

Efterfølgende udvikling af libmdbx vil fokusere på den endelige C++ API, yderligere stabilisering af basiskoden, forbedring af bibliotekets anvendelighed og pakning til populære Linux-distributioner. Blandt de foreslåede forbedringer er det værd at bemærke understøttelse af nøgler i formatet MessagePack.

Kilde: opennet.ru

Tilføj en kommentar