Izdaja visokoučinkovite vgrajene DBMS libmdbx 0.10.4 in libfpta 0.3.9

Izdana je verzija biblioteka libmdbx 0.10.4 (MDBX) koja implementira visokoučinkovitu kompaktno ugrađenu bazu podataka klase ključ-vrednost, zajedno sa povezanim bibliotekom libfpta 0.3.9 (FPTA) koja implementira tabelarni prikaz podataka sa sekundarnim i složenim indeksima iznad MDBX-a. Obje biblioteke su podeljene pod licencama odobrenim od strane OSI. Podržani su svi aktuelni operativni sistemi i arhitekture, kao i ruski Elbrus 2000.

Historijski, libmdbx je duboka prerada SODB LMDB i nadmašuje svog prethodnika po pouzdanosti, setu mogućnosti i performansama. U poređenju sa LMDB, u libmdbx se pridaje velika pažnja kvalitetu koda, stabilnom radu API-ja, testiranju i automatskim proverama. Dobijena je alatka za proveru integriteta strukture Baze podataka sa nekim mogućnostima oporavka.

Tehnološki, libmdbx nudi ACID, strogu serijalizaciju promena i neblokirajuće čitanje sa linearnim skaliranjem po jezgrama CPU-a. Podržava se automatska kompakcija, automatsko upravljanje veličinom Baze podataka, procena obima uzoraka prema opsegu (range query estimation). Od 2016. godine projekte finansira kompanija Positive Technologies i od 2017. godine koristi se u njenim proizvodima.

Za libmdbx dostupan je C++ API, kao i podržane vezice od strane entuzijasta za jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Za libfpta javno je dostupan samo opis API-ja u obliku zaglavlja C/C++.

Glavne novosti, poboljšanja i ispravke dodate nakon prethodne vesti 9. maja:

  • Osigurana je mogućnost reprodukovanih gradnji.
  • Ispravljen je greška koja je u vrlo retkim slučajevima tokom čuvanja transakcije mogla izazvati petlju/zavisnost. Problem su otkrili stručnjaci iz Positive Technologies tokom interne provere svojih proizvoda.
  • Testovi su dopunjeni i prošireni testni scenariji za proveru svih dostupnih neizomorfnih stanja stabla stranica i sadržaja GC unutar Baze podataka.
  • U C++ API-ju ispravljen je suvišni «noexcept», dodane su dodatne prekoračenja za metodu «cursor::erase()», implementacija bafera oslobođena je korišćenja «std::string» za obezbeđivanje usklađivanja (aktuelno za CLANG libstdc++).
  • Исправлен регресс в алгоритме спиллинга грязных страниц (избирательное вытеснение изменённых страниц базы данных), который проявлялся редкой неожиданной ошибкой MDBX_PROBLEM при изменении данных в больших транзакциях.
  • Проведено тестирование с добавлением ряда проверок для обеспечения стабильности при намеренном повреждении базы данных.
  • Устранены незначительные предупреждения UndefinedBehaviorSanitizer и проблемы Coverity Scan.
  • Исправлена проверка устаревшего и больше не используемого внутреннего флага «P_DIRTY» во вложенных страницах внутри образов базы данных, созданных старыми версиями библиотеки.
  • В скриптах CMake улучшен поиск компонентов компилятора, необходимых для LTO (оптимизация на этапе линковки).
  • Максимальное количество одновременных читателей увеличено до 32767.
  • Ускорена работа при использовании Valgrind и AddressSanitizer.
  • На Windows устранено рекурсивное использование SRW-lock при работе в режиме MDBX_NOTLS (без использования локального хранилища потоков), исправлена генерация bootid в случае изменения системного времени, улучшено обнаружение WSL1 и WSL2, добавлена возможность открытия базы данных на Plan 9, смонтированной через DrvFS.
  • Всего внесено более 160 изменений в 57 файлов, добавлено около 5000 строк, удалено примерно 2500.

Особая благодарность команде проекта Erigon (экосистема Ethereum) за помощь в тестировании в экстремальных сценариях использования. За пять месяцев с момента выпуска libmdbx v0.10.0, при объёме базы данных 1-2 Тб в каждой установке Erigon (который используется на 7% узлов Ethereum), поступило всего три сообщения о повреждении базы данных, все из-за внешних причин, а не ошибок программного обеспечения: в двух случаях причиной были сбои оперативной памяти, в третьем — неверное обнуление данных в специфической конфигурации подсистемы хранения с использованием BTRFS.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster