Wydanie wbudowanej bazy danych libmdbx 0.13.10

Opublikowano wydanie biblioteki libmdbx 0.13.10 (MDBX) z realizacją wydajnej, kompaktowej bazy danych do osadzania typu klucz-wartość. Kod libmdbx jest dystrybuowany na licencji Apache 2.0. Obsługiwane są wszystkie aktualne systemy operacyjne i architektury, w tym rosyjski Elbrus 2000. Dla libmdbx dostępne jest rozwinięte API dla C++, a także wsparcie dla języków Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno i Scala. Wśród projektów korzystających z libmdbx można wymienić Isar, Erigon i Reth, a także rozwiązania firm StarkWare i Positive Technologies.

Historicznie libmdbx jest głęboką przeróbką DBMS LMDB i przewyższa swojego przodka pod względem niezawodności, funkcji i wydajności. W porównaniu do LMDB, w libmdbx dużą uwagę poświęcono jakości kodu, stabilności API, testowaniu i automatycznym kontrolom. Dostarczane narzędzie do weryfikacji integralności struktury bazy danych oferuje także pewne możliwości przywracania. Technologicznie libmdbx zapewnia ACID, ścisłą serializację zmian i nieblokujące odczyty z liniowym skalowaniem po rdzeniach CPU. Obsługiwane jest automatyczne kompresowanie, automatyczne zarządzanie rozmiarem bazy danych oraz oszacowanie objętości zapytań w zakresie (range query estimation).

W grudniu 2025 roku główne repozytorium projektu zostało przeniesione z GitFlic na SourceCraft. Powodem są skargi użytkowników nie rosyjskojęzycznych oraz błędy w edytorze Markdown, których nie naprawiono przez ponad trzy lata. Doniesiono również o zamknięciu lustra projektu na GitHubie, ale później repozytorium zostało przywrócone z wyjaśnieniem, że zrobiono to na prośbę programistów z Chin i Brazylii, a także platformy Tempo, która korzysta z libmdbx.

Główne zmiany po poprzedniej wiadomości z 1 sierpnia:

  • Przywrócono wsparcie dla starych jąder Linux, począwszy od wersji 3.16.
  • Zapewniono wsparcie mobilnego systemu operacyjnego Harmony.
  • Błąd „MDBX_WANNA_RECOVERY” przy otwieraniu bazy danych w trybie tylko do odczytu teraz zwracany jest, jeśli rozmiar bazy danych nie jest wielokrotnością rozmiaru strony systemowej, ale ignorowana jest niewielokrotność rozmiaru bloku przydzielania pamięci wirtualnej.
  • Usunięto możliwość wystąpienia niespodziewanego „SIGBUS” z powodu opóźnionego/lniwego przydzielania przez jądro systemu operacyjnego miejsca w wypełnionym systemie plików po zwiększeniu pliku bazy danych.
  • Poprawiono sprawdzanie asercji w ścieżce skanowania bitmapy DBI, co prowadziło do rzadkich awarii 32-bitowych wersji debugujących.
  • Dla systemu Android wdrożono manewr, który zmniejsza prawdopodobieństwo wystąpienia błędu systemowego „EAGAIN”, wynikającego z braku zasobów systemowych i procesów przejściowych przy zamykaniu i szybkim ponownym otwieraniu bazy danych.
  • Dla Linuxa dodano zapobieganie występowaniu błędu w implementacji fast_commit systemu plików Ext4.
  • Poprawiono błąd automatycznej regulacji parametrów podczas ustawiania geometrii z określonym minimalnym rozmiarem strony, co mogło powodować zwiększenie rozmiaru strony na maszynach z dużą ilością RAM.
  • Przepracowano implementację buforów i wprowadzono inne ulepszenia w interfejsie API C++.

Dodatkowo warto wspomnieć o zapowiedzi wykładu „libmdbx: Roadmap, sukcesy, cele i przeszkody” na wydarzeniu Ethereum Day, które odbędzie się 23 grudnia w Moskwie.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster