Wydanie wysokowydajnej wbudowanej bazy danych libmdbx 0.11.3

Wydano bibliotekę libmdbx 0.11.3 (MDBX) z implementacją wysokowydajnej, kompaktowej bazy danych typu klucz-wartość. Kod libmdbx jest rozpowszechniany na licencji OpenLDAP Public License. Wspierane są wszystkie aktualne systemy operacyjne i architektury, w tym także rosyjski Elbrus 2000. Na koniec 2021 roku libmdbx jest wykorzystywane jako backend przechowywania w dwóch najszybszych klientach Ethereum — Erigon oraz nowej „Akuli”, która według dostępnych informacji jest najwydajniejszym klientem Ethereum.

Historia libmdbx jest głębokim przetworzeniem bazy danych LMDB i przewyższa swojego poprzednika pod względem niezawodności, zestawu możliwości i wydajności. W porównaniu z LMDB, libmdbx kładzie duży nacisk na jakość kodu, stabilną pracę API, testowanie i automatyczne kontrole. Dostarczana jest narzędzie do sprawdzania integralności struktury bazy danych z pewnymi możliwościami przywracania.

Technologicznie libmdbx oferuje ACID, ścisłą serializację zmian oraz ni Blockingowe odczyty z liniowym skalowaniem w zależności od rdzeni CPU. Wspierana jest automatyczna kompaktyfikacja, automatyczne zarządzanie rozmiarami bazy danych oraz szacowanie objętości zapytań w zakresie (range query estimation). Od 2016 roku projekt jest finansowany przez firmę Positive Technologies i od 2017 roku jest używany w jej produktach.

Dla libmdbx oferowane jest API w C++, a także wspierane przez entuzjastów powiązania z językami Rust, Haskell, Python, NodeJS, Ruby, Go, Nim.

Główne nowości, ulepszenia i poprawki dodane po wcześniejszej wiadomości z 11 października:

  • API w C++ uznawane jest za gotowe do użycia.
  • Zaktualizowano dane GC przy rejestracji dużych transakcji, co jest szczególnie istotne przy używaniu libmdbx w ekosystemie Ethereum.
  • Zmieniono wewnętrzną sygnaturę formatu bazy danych z wsparciem dla automatycznej aktualizacji, która jest całkowicie przezroczysta dla użytkowników. Dzięki temu można wyeliminować fałszywe pozytywne komunikaty o uszkodzeniu bazy danych, gdy starsze wersje bibliotek są używane do odczytu transakcji zarejestrowanych przez aktualne wersje.
  • Dodano funkcje mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() oraz mdbx_env_get_syncbytes(). Dodano wsparcie dla operacji MDBX_SET_UPPERBOUND.
  • Usunięto wszystkie ostrzeżenia podczas kompilacji we wszystkich wspieranych kompilatorach w trybach C++ 11/14/17/20. Zapewnia pełną zgodność z przestarzałymi kompilatorami: clang od wersji 3.9, gcc od wersji 4.8, w tym kompilacja za pomocą sdevtoolset-9 dla CentOS/RHEL 7.
  • Usunięto możliwość konfliktu stron meta po ręcznym przełączeniu na określoną stronę meta za pomocą narzędzia mdbx_chk.
  • Poprawiono zwracanie nieoczekiwanej błędnej wiadomości MDBX_PROBLEM przy nadpisywaniu przestarzałych stron meta.
  • Poprawiono zwrot MDBX_NOTFOUND w przypadku nieprecyzyjnego dopasowania podczas przetwarzania zapytania MDBX_GET_BOTH.
  • Usunięto błąd kompilacji na Linuxie przy braku plików nagłówkowych z opisami interfejsów z jądrem.
  • Poprawiono kolizję między wewnętrzną flagą MDBX_SHRINK_ALLOWED a opcją MDBX_ACCEDE.
  • Usunięto kilka zbędnych sprawdzeń assert.
  • Naprawiono niespodziewany zwrot MDBX_RESULT_TRUE z funkcji mdbx_env_set_option().
  • Łącznie wprowadzono ponad 90 zmian w 25 plikach, dodano około 1300 linii, usunięto około 600.

Ź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