Programiści SQLite opracowują backend drzewa HC z obsługą zapisu równoległego

Twórcy projektu SQLite rozpoczęli testowanie eksperymentalnego zaplecza HCtree, które obsługuje blokowanie na poziomie wiersza i zapewnia wysoki poziom paralelizmu w przetwarzaniu zapytań. Nowe zaplecze ma na celu poprawę wydajności SQLite w systemach klient-serwer, które obsługują dużą liczbę równoczesnych żądań zapisu do bazy danych.

Struktury b-drzewa pierwotnie używane w SQLite do przechowywania danych nie były zaprojektowane do tego typu obciążeń, co ograniczało SQLite do zapisu jednowątkowego. W ramach eksperymentu programiści zaczęli opracowywać alternatywne rozwiązanie wykorzystujące struktury HC-drzewa do przechowywania danych, które lepiej nadają się do paralelizacji operacji zapisu.

Aby zorganizować jednoczesne wykonywanie wielu operacji, HCtree wykorzystuje mechanizm partycjonowania transakcji, który wykorzystuje blokady na poziomie stron i jest podobny do MVCC (kontroli współbieżności wielu wersji), ale stosuje weryfikację transakcji na podstawie kluczy i zakresów kluczy, a nie zestawów stron. Operacje odczytu i zapisu są wykonywane na podstawie migawki bazy danych, której zmiany stają się widoczne w bazie głównej dopiero po zakończeniu transakcji.

Klienci mogą skorzystać z trzech operacji otwierania transakcji:

  • „BEGIN” — transakcje nie uwzględniają danych dostępowych od innych klientów. Jeśli w ramach transakcji wykonywane są operacje zapisu, transakcja może zostać zatwierdzona tylko wtedy, gdy w czasie jej wykonywania nie wykonano żadnych innych operacji zapisu w bazie danych.
  • „BEGIN CONCURRENT” — transakcje zbierają informacje o dostępie innych klientów. Jeśli w ramach transakcji wykonywane są operacje zapisu, transakcja może zostać zatwierdzona, jeśli od momentu utworzenia migawki do bazy danych zatwierdzono inne transakcje.
  • „BEGIN EXCLUSIVE” – po otwarciu transakcji blokuje operacje z innych transakcji do momentu jej zakończenia.

HCtree obsługuje replikację master-slave, umożliwiając migrację transakcji do innej bazy danych i synchronizację baz danych pomocniczych z bazą główną. HCtree znosi również ograniczenie rozmiaru bazy danych – zamiast 32-bitowych identyfikatorów stron danych, HCtree używa identyfikatorów 48-bitowych, zwiększając maksymalny rozmiar bazy danych z 16 tebibajtów do 1 eksbibajta (miliona tebibajtów). Wydajność SQLite z zapleczem HCtree ma być porównywalna z wydajnością klasycznego, jednowątkowego zaplecza. Klienci SQLite z obsługą HCtree będą mogli uzyskać dostęp zarówno do baz danych opartych na drzewie HC, jak i do starszych baz danych SQLite.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster