Release van DBMS libmdbx 0.11.7. Verplaats de ontwikkeling naar GitFlic na Lockdown op GitHub

De libmdbx 0.11.7 (MDBX)-bibliotheek is uitgebracht en implementeert een krachtige, compacte, ingebedde sleutel-waardedatabase. De libmdbx-code wordt gedistribueerd onder de OpenLDAP Public License. Alle huidige besturingssystemen en architecturen worden ondersteund, evenals de Russische Elbrus 2000.

De release is opmerkelijk vanwege de migratie van het project naar de GitFlic-service, nadat de GitHub-beheerder libmdbx samen met een groot aantal andere projecten op 15 april 2022 zonder waarschuwing of uitleg had verwijderd. Tegelijkertijd werd de toegang geblokkeerd voor veel ontwikkelaars die verbonden zijn aan bedrijven die onder Amerikaanse sancties vallen. Vanuit gebruikersperspectief veranderden alle pagina's, de repository en de forks van het project plotseling in een "404"-pagina, zonder enige mogelijkheid tot communicatie of om te achterhalen waarom.

Helaas zijn bijna alle issues verloren gegaan, die veel vragen met gedetailleerde antwoorden en discussies bevatten. Het verlies van deze informatie is de enige objectieve schade die de GitHub-beheerder aan het project heeft kunnen toebrengen. Gedeeltelijke kopieën van de discussies zijn nog steeds beschikbaar in het archief van archive.org.

Het verlies van de gebouwde CI-scripts en -infrastructuur (gratis beschikbaar voor OpenSource-projecten) dwong ons tot herziening, unificatie en het elimineren van een kleine technische achterstand. CI is nu bijna teruggebracht tot zijn oorspronkelijke omvang, met uitzondering van assembly- en runtests voor alle BSD- en Solaris-varianten. Kenmerkend voor GitHub was dat er na de acties geen uitleg of meldingen werden ontvangen, behalve een herinnering over de noodzaak tot betaling en pogingen tot afschrijving.

Sinds het laatste nieuws over de release van libmdbx v0.11.3 zijn, naast het herstel van GitHub-acties, de volgende verbeteringen en oplossingen het vermelden waard:

  • Добавлен обход обнаруженного эффекта/дефекта некогерентности в объединённом кэше страниц и буферов в ядре Linux. В системах где кэш страниц и буферов действительно объединён, ядру нет смысла тратить память под две копии данных при записи в уже отображённый в память файл. Поэтому записываемые данные становятся видимыми через отображение в памяти до завершения системного вызова write(), даже если данные ещё не записаны на диск.

    Over het algemeen is ander gedrag niet rationeel, omdat je bij een vertraagde samenvoeging nog steeds vergrendelingen voor paginalijsten moet vastleggen, gegevens moet kopiëren of PTE's moet aanpassen. Daarom is de onuitgesproken regel van coherentie van kracht sinds 1989, toen de unified buffer cache in SRV4 verscheen. Het detecteren van vreemde fouten in geladen scenario's van libmdbx-exploitatie vergde daarom veel werk. Eerst moest het probleem worden gereproduceerd, vervolgens moesten de hypothesen worden geverifieerd en verbeteringen worden gecontroleerd.

    We kunnen nu met zekerheid zeggen dat het probleem betrouwbaar is geïdentificeerd, gelokaliseerd en betrouwbaar is opgelost, ondanks de complexiteit en specificiteit van het reproductiescenario. Bovendien werd de werking van het bypassmechanisme bevestigd door een van de ontwikkelaars van Erigon (Ethereum); in zijn geval manifesteerde de activering van de bescherming zich tijdens de debug-build als een regressie als gevolg van een onnodige assert-check.

    Следует отметить, что в контексте широкого применения libmdbx в рабочих проектах, принципиально важнее обеспечение надёжной работы, а не выяснение «ошибка это или особенность» и можно ли полагаться на такую когерентность, тем более не поиск причин некогерентности внутри ядра Linux. Поэтому здесь речь об устранении проблемы, которая могла затрагивать пользователей.

  • Er is een regressie van de EXDEV-fout (Cross-device link) opgelost tijdens het hot copy van een database zonder comprimering naar een ander bestandssysteem, zowel via de API als via het hulpprogramma mdbx_copy.
  • Kris Zyp implementeerde libmdbx-ondersteuning in Deno. Kai Wetlesen bundelde de RPM voor Fedora. David Bouyssié implementeerde de Scala-bindings.
  • De verwerking van de waarde ingesteld door de optie MDBX_opt_rp_augment_limit bij het verwerken van enorme transacties in grote databases is verbeterd. Voorheen konden door een bug onnodige acties worden uitgevoerd, wat soms de prestaties beïnvloedde in Ethereum-implementaties (Erigon/Akula/Silkworm) en Binance Chain-projecten.
  • Er zijn veel bugs opgelost, waaronder in de C++ API. Er zijn veel problemen met assembly opgelost in zeldzame en exotische configuraties. Een volledige lijst met alle belangrijke verbeteringen is beschikbaar in het changelog.
  • In totaal werden er 185 wijzigingen aangebracht in 89 bestanden, werden er ongeveer 3300 regels toegevoegd en ongeveer 4100 verwijderd. Er werden meer verwijderd, voornamelijk door het opschonen van nutteloze technologische bestanden met betrekking tot GitHub en bijbehorende diensten.

Historisch gezien is libmdbx een grondige herziening van het LMDB DBMS en overtreft het zijn voorouder op het gebied van betrouwbaarheid, functieset en prestaties. Vergeleken met LMDB legt libmdbx veel nadruk op codekwaliteit, API-stabiliteit, testen en geautomatiseerde controles. Er wordt een hulpprogramma meegeleverd waarmee u de integriteit van de databasestructuur kunt controleren, met enkele herstelmogelijkheden.

Technologisch gezien biedt libmdbx ACID, strikte serialisatie van wijzigingen en niet-blokkerend lezen met lineaire schaalbaarheid over CPU-cores. Automatische compactificatie, automatisch beheer van de databasegrootte en schatting van bereikquery's worden ondersteund. Sinds 2016 wordt het project gefinancierd door Positive Technologies en sinds 2017 in de producten ervan gebruikt.

libmdbx biedt een uitgebreide C++ API en door de community ondersteunde bindingen met Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno en Scala.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster