wersja 0.9.1 biblioteki (MDBX) z realizacją wysokowydajnej, kompaktowej, wbudowanej bazy danych klasy klucz-wartość. Kod libmdbx jest dystrybuowany na licencji .
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ą .
Biblioteka libmdbx nie jest tylko 'forkiem', ale radykalnie przebudowanym potomkiem — transakcyjnej wbudowanej SGBD klasy 'klucz-wartość' opartej na bez , 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 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 , ś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):
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 z prezentacją wersji 0.5 w styczniu 2020:
- W celu szybkiego wsparcia i odpowiedzi na pytania została utworzona otwarta .
- Usunięto ponad dziesięć błędów i usterek (patrz ).
- Poprawiono wiele literówek i błędów ortograficznych, wprowadzone liczne poprawki kosmetyczne.
- Rozszerzono scenariusze testowe.
- Wdrożono wsparcie dla iOS, Android, , , , i .
- Przedstawiona została wstępna wersja API C++ w .
- Zorganizowano wbudowaną dokumentację w formacie Doxygen oraz automatyczne generowanie .
- 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 .
Źródło: opennet.ru
