Wydanie kompaktowej wbudowanej bazy danych libmdbx 0.9.1

Wydano wersja 0.9.1 biblioteki libmdbx (MDBX) z realizacją wysokowydajnej, kompaktowej, wbudowanej bazy danych klasy klucz-wartość. Kod libmdbx jest dystrybuowany na licencji OpenLDAP Public License.

Obecna wersja jest kompromisem między zamiarem wydania długoterminowej stabilnej wersji 1.0 z pełnym wsparciem dla C++ a niechęcią do odkładania wydań z powodu braku gotowości do zamrożenia nowego API C++. Wydanie to jest wynikiem 9 miesięcy pracy ukierunkowanej na stabilizację biblioteki oraz zwiększenie jej użyteczności, a także zawiera wersję wstępną C++ API.

Biblioteka libmdbx nie jest tylko 'forkiem', ale radykalnie przebudowanym potomkiem LMDB — transakcyjnej wbudowanej SGBD klasy 'klucz-wartość' opartej na drzewie B+ bez wstępnej rejestrowania, która umożliwia wielowątkowym procesom równoczesne i efektywne działanie z lokalnie współdzieloną (nie sieciową) bazą danych bez dedykowanego procesu serwerowego. Libmdbx zasadniczo rozszerza wdraża możliwości swojego prototypu, jednocześnie eliminując lub łagodząc wady. Przy tym, zdaniem twórców, libmdbx jest nieco szybszy i znacznie niezawodniejszy od LMDB.

libmdbx oferuje ACID, ścisłą serializację zmian oraz nieblokujące odczyty z liniowym skalowaniem w oparciu o rdzenie CPU. Wyniki testów wydajności (wysyłanie równoległych zapytań o odczyt/wyszukiwanie w 1-2-4-8 wątkach na CPU i7-4600U z 2 fizycznymi rdzeniami w trybie 4 wątków HyperThread):

Wydanie kompaktowej wbudowanej bazy danych libmdbx 0.9.1

Najważniejsze różnice MDBX w porównaniu do LMDB:

  • Znacznie większa uwaga poświęcana jest jakości kodu, 'niezawodności' API, testowaniu i automatycznym kontrolom.
  • Znacznie większa kontrola podczas pracy, od weryfikacji parametrów po wewnętrzną audyt struktur baz danych.
  • Auto-kompaktowanie i automatyczne zarządzanie rozmiarem bazy danych.
  • Jednolity format bazy danych dla 32-bitowych i 64-bitowych kompilacji.
  • Ocena objętości zapytań na podstawie zakresów (range query estimation).
  • Wsparcie kluczy o podwójnej długości oraz wybierany przez użytkownika rozmiar strony bazy danych.
  • Narzędzie do weryfikacji integralności struktury bazy danych z pewnymi możliwościami odzyskiwania.

Główne innowacje i poprawki po poprzedniej wiadomości z prezentacją wersji 0.5 w styczniu 2020:

  • W celu szybkiego wsparcia i odpowiedzi na pytania została utworzona otwarta grupa w Telegramie.
  • Usunięto ponad dziesięć błędów i usterek (patrz dziennik zmian).
  • Poprawiono wiele literówek i błędów ortograficznych, wprowadzone liczne poprawki kosmetyczne.
  • Rozszerzono scenariusze testowe.
  • Wdrożono wsparcie dla iOS, Android, buildroot, Musl, uClibc, WSL1 i Wine.
  • Przedstawiona została wstępna wersja API C++ w jednym pliku nagłówkowym.
  • Zorganizowano wbudowaną dokumentację w formacie Doxygen oraz automatyczne generowanie Dokumentacji online.
  • Zapewniono automatyczne tworzenie archiwów z połączonymi kodami źródłowymi.
  • Dodano wsparcie dla przygotowywania transakcji i kursorów, kontekstów użytkowników dla transakcji i kursorów.
  • Wdrożono dodatkowe metody kontroli integralności odniesień w zrzutach MVCC B+tree.
  • Dodano wsparcie dla weryfikacji zrzutu MVCC bazy danych, dostępnego przez dowolną stronę metadanych z możliwością przełączania dla przywracania.
  • Wdrożono wsparcie dla ponownego otwierania bazy danych z jednego procesu w celach testowych itd.
  • Wdrożono automatyczne przetwarzanie opcji MDBX_NOSUBDIR podczas otwierania bazy danych.
  • Dodano funkcje generowania kluczy całkowitych z wartości zmiennoprzecinkowych i "uniwersalnych" liczb JavaScript.
  • W sumie wprowadzono 430 zmian dotyczących 93 plików, dodano ponad 25 tysięcy linii, usunięto ponad 8,5 tysiąca linii.

Dalszy rozwój libmdbx skupi się na opracowywaniu finalnego API C++, dalszej stabilizacji podstawowego kodu, zwiększeniu użyteczności biblioteki, a także na tworzeniu pakietów dla popularnych dystrybucji Linux. Wśród przewidywanych poprawek warto zaznaczyć wsparcie dla kluczy w formacie MessagePack.

Ź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