Wydanie kompaktowego wbudowanego systemu DBMS libmdbx 0.9.1

Wydany wersja biblioteki 0.9.1 libmdbx (MDBX) implementacja wysokowydajnej, kompaktowej, wbudowanej bazy danych klucz-wartość. Kod libmdbx jest rozpowszechniany na podstawie licencji Licencja publiczna OpenLDAP.

Obecna wersja stanowi kompromis pomiędzy zamiarem wydania długoterminowej, stabilnej wersji 1.0 z pełną obsługą C++, a niechęcią do opóźniania wydań ze względu na nieprzygotowanie na zamrożenie nowego API C++. Prezentowane wydanie jest efektem 9 miesięcy pracy mających na celu ustabilizowanie biblioteki i poprawę jej użyteczności, a także zawiera wersję wstępną Interfejs API języka C++.

Biblioteka libmdbx to nie tylko „fork”, ale radykalnie przeprojektowany potomek LMDB — transakcyjny wbudowany system DBMS klasy „klucz-wartość” oparty na drzewo B+ без proaktywne rejestrowanie, co pozwala procesom wielowątkowym na konkurencyjną i wydajną pracę z lokalnie udostępnianą (niesieciową) bazą danych bez dedykowanego procesu serwera. libmdbx zasadniczo rozszerza się możliwości swojego przodka, jednocześnie eliminując lub łagodząc wady. Jednocześnie, zdaniem twórców, libmdbx jest nieco szybszy i znacznie bardziej niezawodny niż LMDB.

sugeruje libmdbx ACID, ścisła serializacja zmian i nieblokujący odczyt z liniowym skalowaniem pomiędzy rdzeniami procesora. Wyniki testów wydajności (wysyłanie równoległych żądań odczytu/wyszukiwania w 1-2-4-8 wątkach na procesorze i7-4600U z 2 rdzeniami fizycznymi w 4-wątkowym trybie HyperThread):

Wydanie kompaktowego wbudowanego systemu DBMS libmdbx 0.9.1

Najważniejsze różnice pomiędzy MDBX i LMDB:

  • Zasadniczo większą uwagę zwraca się na jakość kodu, spójność API, testowanie i automatyczne kontrole.
  • Wyraźnie większa kontrola podczas pracy, od sprawdzania parametrów po wewnętrzny audyt struktur baz danych.
  • Automatyczne kompaktowanie i automatyczne zarządzanie rozmiarem bazy danych.
  • Pojedynczy format bazy danych dla zestawów 32-bitowych i 64-bitowych.
  • Oszacowanie objętości próbek według zakresów (estymacja zapytania o zakres).
  • Obsługa dwukrotnie dłuższych kluczy i wybieranego przez użytkownika rozmiaru strony bazy danych.
  • Narzędzie do sprawdzania integralności struktury bazy danych z pewnymi możliwościami odzyskiwania.

Główne innowacje i ulepszenia po poprzednie wiadomości wraz z wprowadzeniem wersji 0.5 w styczniu 2020 r.:

  • Stworzono otwarty system umożliwiający szybką pomoc i odpowiedzi na pytania. Grupa telegramów.
  • Wyeliminowano kilkanaście błędów i niedociągnięć (patrz. dziennik zmian).
  • Naprawiono wiele literówek i błędów ortograficznych oraz wprowadzono liczne ulepszenia kosmetyczne.
  • Scenariusze testowe zostały rozszerzone.
  • Wsparcie dla iOS, Androida, katalog główny, muzułmański, uClibc, WSL1 и wino.
  • Wersja zapoznawcza interfejsu API C++ wydana w jeden plik nagłówkowy.
  • Wbudowana dokumentacja w formacie Doxygen i automatyczne generowanie Dokumentacja internetowa.
  • Zapewnione jest automatyczne generowanie archiwów z połączonymi tekstami źródłowymi.
  • Dodano obsługę przygotowywania transakcji i kursorów, kontekstów użytkownika dla transakcji i kursorów.
  • Zaimplementowano dodatkowe metody kontroli integralności referencyjnej w migawkach MVCC drzewa B+.
  • Dodano obsługę sprawdzania migawki bazy danych MVCC, dostępnej za pośrednictwem dowolnej metastrony z możliwością przełączenia w celu odzyskania.
  • Zaimplementowano obsługę ponownego otwierania bazy danych z jednego procesu w celach testowych itp.
  • Zaimplementowano automatyczne przetwarzanie opcji MDBX_NOSUBDIR podczas otwierania bazy danych.
  • Dodano funkcje generowania kluczy całkowitych z wartości zmiennoprzecinkowych i liczb „uniwersalnych” JavaScript.
  • Łącznie wprowadzono 430 zmian dotyczących 93 plików, dodano ponad 25 tys. linii, usunięto ponad 8.5 tys. linii.

Późniejszy rozwój libmdbx będzie skupiał się na ostatecznym API C++, dalszej stabilizacji kodu bazowego, poprawie użyteczności biblioteki i pakowaniu dla popularnych dystrybucji Linuksa. Wśród proponowanych ulepszeń warto zwrócić uwagę na obsługę kluczy w formacie Pakiet wiadomości.

Źródło: opennet.ru

Dodaj komentarz