Na vijf jaar ontwikkeling is de tweede release candidate van libmdbx 1.0 gepubliceerd

Beschikbaar для тСстирования Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libmdbx с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ встраиваСмой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… класса ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ВСкущая вСрсия (0.5) являСтся тСхничСским Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ„Π°Π·Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΈ стабилизации, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код libmdbx gedistribueerd door ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ OpenLDAP Public License.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° MDBX являСтся сущСствСнно ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ LMDB β€” transactioneel ingebedde DBMS van de klasse β€œsleutelwaarde” op basis van boom B+ Π±Π΅Π· proactief loggen, которая позволяСт ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ процСссам ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎ ΠΈ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с локально-раздСляСмой (Π½Π΅ сСтСвой) Π‘Π”. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ MDBX быстрСС ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ LMDB, ΠΈ ΠΏΡ€ΠΈ этом сохраняСт всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности своСго прародитСля, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ACID ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ядрам CPU.

De belangrijkste verschillen tussen MDBX en LMDB:

  • Fundamenteel wordt er meer aandacht besteed aan codekwaliteit, testen en automatische controles.
  • Aanzienlijk meer controle tijdens de werking, van het controleren van parameters tot de interne audit van databasestructuren.
  • Auto-compactificatie en automatisch beheer van de databasegrootte.
  • EΓ©n databaseformaat voor 32-bits en 64-bits assemblages.
  • Schatting van monstervolumes per bereik (schatting van bereikquery's).
  • Ondersteuning voor sleutels die twee keer zo groot zijn als pannenkoeken en door de gebruiker te selecteren databasepaginagrootte.

Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ libmdbx являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ принятого Π² августС 2019 Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² MDBX ΠΈ MithrilDB. ΠŸΡ€ΠΈ этом Π² libmdbx Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ (Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ) максимум тСхничСского Π΄ΠΎΠ»Π³Π° ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. По Ρ„Π°ΠΊΡ‚Ρƒ Π² ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ сдСлано Π² 2-3 Ρ€Π°Π·Π° большС, Ρ‡Π΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π»ΠΎΡΡŒ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ исходно:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° macOS ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Β«Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ эшСлона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° AIX ΠΈ HP-UX ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΈ нСобходимости.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° санация ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Undefined Behavior Sanitizer ΠΈ Address Sanitizer, устранСны всС прСдупрСТдСния ΠΏΡ€ΠΈ сборкС с Β«-WpedanticΒ», всС прСдупрСТдСния Coverity Static Analyzer ΠΈ Ρ‚.Π΄.
  • Update API-beschrijvingen.
  • БлияниС (Π°ΠΌΠ°Π»ΡŒΠ³Π°ΠΌΠ°Ρ†ΠΈΡ) исходного ΠΊΠΎΠ΄Π° для удобства встраивания.
  • CMake-ondersteuning.
  • Ondersteuning voor geneste transacties.
  • Bootid gebruiken om te bepalen of het besturingssysteem opnieuw is opgestart (vuile databasestop).
  • Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ подсчёт ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Ρ…/старых страниц ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ информация ΠΎ транзакциях.
  • Optie MDBX_ACCEDE voor verbinding met een reeds geopende database in compatibele modus.
  • Gebruiken OFD-blokkering wanneer beschikbaar.
  • Hete back-up in pijp.
  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки (Π΄ΠΎ 2-3 Ρ€Π°Π· быстрСС Β«qsort()Β» ΠΈ Π΄ΠΎ 30% быстрСС Β«std::sort()Β»).
  • De maximale sleutellengte is verhoogd.
  • Automatische controle van vooruitlezen (cachestrategie voor databasebestanden in het geheugen).
  • Agressievere en snellere automatische verdichting.
  • Een meer optimale strategie voor het samenvoegen van B+ boompagina's.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (NFS, Samba ΠΈ Ρ‚.ΠΏ.) для прСдотвращСния поврСТдСния Π‘Π” ΠΏΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ использовании.
  • Het testpakket is uitgebreid.

De ontwikkeling van de "volgende" versie van libmdbx zal als een apart project worden voortgezet MithrilDB, terwijl de ontwikkelingsvector van de β€œhuidige” versie van MDBX gericht is op het bevriezen en stabiliseren van de functieset. Deze beslissing is genomen om drie redenen:

  • Totaal incompatibel: MithrilDB vereist een ander (incompatibel) databasebestandsformaat en een andere (incompatibele) API om alle geplande functies te implementeren.
  • Nieuwe broncode: De broncode van MithrilDB is onafhankelijk van LMDB gelicentieerd, en het is de bedoeling dat het project zelf onder een andere licentie wordt gepubliceerd (goedgekeurd door OSI Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π½Π΅ OpenLDAP openbare licentie).
  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, внСсти большС опрСдСлённости ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

MithrilDB is, net als MDBX, ook gebaseerd op boom B+ en zal ook extreem hoge prestaties leveren, terwijl een aantal fundamentele nadelen van MDBX en LMDB worden geΓ«limineerd. In het bijzonder zal het probleem van β€˜long reads’ worden geΓ«limineerd, wat zich manifesteert als β€˜opzwellen’ van de database vanwege het feit dat de verwerking van afval wordt geblokkeerd door long reading-transacties. Nieuwe MithrilDB-functies zijn onder meer:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° размСщСния Π‘Π” Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… носитСлях: HDD, SSD ΠΈ энСргонСзависимой памяти.
  • ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для Β«Ρ†Π΅Π½Π½Ρ‹Ρ…Β» ΠΈ Β«ΠΌΠ°Π»ΠΎΡ†Π΅Π½Π½Ρ‹Ρ…Β», для «горячих», Β«Ρ‚Π΅ΠΏΠ»Ρ‹Ρ…Β» ΠΈ Β«Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹Ρ…Β» Π΄Π°Π½Π½Ρ‹Ρ….
  • ИспользованиС Merkle tree для контроля цСлостности Π‘Π”.
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ использованиС WAL ΠΈ сущСствСнно Π±ΠΎΠ»Π΅Π΅ высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² сцСнариях с интСнсивной записью ΠΈ гарантиями Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….
  • ЛСнивая Π΄ΠΎΠ³ΠΎΠ½ΡΡŽΡ‰Π°Ρ фиксация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дисках.

Bron: opennet.ru

Voeg een reactie