A DBMS libmdbx 0.11.7 kiadása. Helyezze át a fejlesztést a GitFlic-re a GitHubon való zárolás után

A libmdbx 0.11.7 (MDBX) könyvtárat egy nagy teljesítményű kompakt beágyazott kulcsérték-adatbázis megvalósításával adták ki. A libmdbx kódot az OpenLDAP nyilvános licence alatt terjesztik. Minden jelenlegi operációs rendszer és architektúra támogatott, valamint az orosz Elbrus 2000.

A kiadás figyelemre méltó a projekt GitFlic szolgáltatásra való migrációja, miután a GitHub adminisztrációja 15. április 2022-én figyelmeztetés és magyarázat nélkül eltávolította a libmdbx-t és egy sor más projektet, ugyanakkor blokkolta a hozzáférést számos olyan fejlesztő számára, akik a bukott cégekhez kapcsolódnak. amerikai szankciók alatt. A felhasználó szemszögéből a projekt összes oldala, tárháza és forkjai hirtelen "404"-es oldallá változtak, anélkül, hogy bármilyen kommunikációra és az okok felderítésére volna lehetőség.

Sajnos szinte minden kérdés elveszett, amelyben sok kérdés volt részletes válaszokkal, valamint sok vita. Ezen információk elvesztése az egyetlen objektív kár, amelyet a GitHub-adminisztrációnak sikerült okoznia a projektnek. A beszélgetések részleges másolatai továbbra is elérhetők az archive.org archívumban.

A beépített CI-szkriptek és az infrastruktúra elvesztése (az OpenSource projektekhez ingyenesen elérhető) átdolgozásra, egységesítésre és egy kis technikai adósság megszüntetésére kényszerítettek bennünket. Mostanra a CI szinte ugyanolyan mértékben helyreállt, kivéve az összes BSD és Solaris változat buildjeit és tesztfutásait. Sokatmondó, hogy a GitHub intézkedései után nem érkezett felvilágosítás vagy értesítés, eltekintve a fizetés szükségességéről és a pénzleírási kísérletekről.

A libmdbx v0.11.3 kiadásáról szóló legutóbbi hírek óta a GitHub-műveletekből való helyreállításon túl a következő fejlesztéseket és javításokat érdemes megjegyezni:

  • Megkerülő megoldás hozzáadva a Linux kernel kombinált oldalának és puffergyorsítótárának észlelt inkoherenciájára/hibájára. Azokon a rendszereken, ahol az oldal és a puffer gyorsítótár valóban egységes, nincs értelme, hogy a kernel két adatpéldányra pazarolja a memóriát, amikor egy már memórialeképezett fájlba ír. Ezért az írandó adatok láthatóvá válnak a memórialeképezésen keresztül, mielőtt a write() rendszerhívás befejeződik, még akkor is, ha az adatok még nem kerültek lemezre.

    Összességében az egyéb viselkedés nem racionális, mert a késleltetett egyesítésnél továbbra is zárakat kell ragadni az oldallistákhoz, másolni az adatokat, vagy módosítani a PTE-t. Ezért a koherencia kimondatlan szabálya 1989 óta van érvényben, amikor is megjelent az egységes puffer gyorsítótár az SRV4-ben. Ezért a furcsa hibák felkutatása elfoglalt libmdbx gyártási forgatókönyvekben sok munkát igényelt. Először a probléma reprodukálásával, majd a hipotézisek ellenőrzésével és a fejlesztések ellenőrzésével.

    Most már magabiztosan kijelenthetjük, hogy a probléma megbízhatóan azonosítva, lokalizálva és megbízhatóan kiküszöbölve, a lejátszási forgatókönyv bonyolultsága és sajátossága ellenére. Ráadásul a bypass mechanizmus működését az Erigon (Ethereum) egyik fejlesztője is megerősítette, az ő esetében a debug buildnél a védelem egy extra érvényesítési ellenőrzés miatt regresszióként váltott ki.

    Megjegyzendő, hogy a libmdbx széles körben elterjedt munkaprojektekben való összefüggésében alapvetően fontosabb a megbízható működés biztosítása, nem pedig annak megállapítása, hogy „ez hiba vagy funkció”, és hogy lehet-e támaszkodni ilyen koherenciára. különösen nem találja meg az inkoherencia okát a Linux kernelen belül. Ezért itt egy olyan probléma megoldásáról beszélünk, amely érintheti a felhasználókat.

  • Javítva az EXDEV (Eszközközi hivatkozás) hiba regressziója, amikor egy adatbázist tömörítés nélkül másoltak át egy másik fájlrendszerre, mind az API-n keresztül, mind az mdbx_copy segédprogram használatával.
  • Kris Zyp bevezette a libmdbx támogatását a Denóban. Kai Wetlesen RPM-eket csomagolt a Fedorához. David Bouyssié kötéseket valósított meg a Scala számára.
  • Az MDBX_opt_rp_augment_limit beállítás által beállított érték rögzített feldolgozása hatalmas tranzakciók feldolgozásakor nagy adatbázisokban. Korábban egy hiba miatt szükségtelen műveletek hajthatók végre, amelyek néha befolyásolták az Ethereum implementációk (Erigon/Akula/Silkworm) és a Binance Chain projektek teljesítményét.
  • Sok hibát kijavítottak, beleértve a C++ API-t is. Ritka és egzotikus konfigurációkban számos összeállítási probléma kijavítása. Az összes jelentős fejlesztés teljes listája elérhető a ChangeLog-ban.
  • Összesen 185 módosítás történt 89 fájlban, ≈3300 sor került hozzáadásra, ≈4100 törölve. Többnyire a GitHubhoz és a függő szolgáltatásokhoz kapcsolódó, már használhatatlan technológiai fájlok törlése miatt távolították el.

A történelem során a libmdbx az LMDB DBMS alapos újratervezése, és megbízhatóság, szolgáltatáskészlet és teljesítmény tekintetében felülmúlja elődjét. Az LMDB-hez képest a libmdbx nagy hangsúlyt fektet a kódminőségre, az API stabilitására, a tesztelésre és az automatizált ellenőrzésekre. Az adatbázis-struktúra integritásának ellenőrzésére szolgáló segédprogram néhány helyreállítási opcióval együtt található.

Technológiailag a libmdbx ACID-t, szigorú változtatási szerializálást és nem blokkoló olvasást kínál lineáris skálázással a processzormagok között. Az automatikus tömörítés, az automatikus adatbázisméret-kezelés és a tartománylekérdezések becslése támogatott. 2016 óta a projektet a Positive Technologies finanszírozza, és 2017 óta használják termékeiben.

A libmdbx kifejlesztett C++ API-t, valamint a rajongók által támogatott kötéseket kínál a Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala számára.

Forrás: opennet.ru

Hozzászólás