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):
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.
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.