Firma Canonical znacząca wersja projektu (Rozproszony SQLite), rozwijający zgodny z SQLite wbudowany silnik SQL, obsługujący replikację danych, automatyczne przywracanie po awariach oraz zapewniający odporność na awarie poprzez rozdzielenie procesorów na kilka węzłów. DBMS jest zrealizowane w formie dołączanej do aplikacji biblioteki C i na licencji Apache 2.0 (oryginalny SQLite jest dostępny jako domena publiczna). Dostępne są powiązania dla języka .
Biblioteka jest nakładką na istniejącą bazę kodu SQLite, która dodaje wsparcie dla protokołu sieciowego do łączenia kilku instancji aplikacji działających na różnych hostach. Aplikacja zbudowana z Dqlite może działać jako samowystarczający, odporny na awarie klaster, niezależny od zewnętrznych baz danych. W praktyce Dqlite jest wykorzystywane przez firmę Canonical w systemie zarządzania kontenerami . W obszarach zastosowań biblioteki wspomniano również o tworzeniu odpornych na awarie urządzeń internetu rzeczy oraz procesorów w systemach
.
Aby zapewnić spójność przy replikacji danych, stosuje się metodę osiągania konsensusu opartą na algorytmie , który jest używany w takich projektach, jak etcd, RethinkDB, CockroachDB i OpenDaylight. W Dqlite stosuje się własną asynchroniczną implementację , napisaną w języku C. Do multiplexowania obsługi połączeń i organizacji uruchamiania współprogramów wykorzystywane są gotowe biblioteki i .
W porównaniu do podobnego projektu , Dqlite zapewnia pełne wsparcie dla transakcji, może łączyć się z dowolnymi projektami w języku C, pozwala na użycie funkcji time() i stosuje replikację opartą na klatkach zamiast replikacji opartej na przesyłaniu zapytań SQL.
Cechy Dqlite:
- Wykonywanie wszystkich operacji dyskowych i sieciowych w trybie asynchronicznym;
- Posiadanie zestawu testowego do potwierdzania poprawności danych;
- Niskie zużycie pamięci i efektywna wymiana danych w sieci;
- Stałe przechowywanie na dysku bazy danych i dziennika transakcji (z możliwością buforowania w pamięci);
- Szybkie przywracanie po awariach;
- Stabilny klient CLI napisany w Go, który można użyć do inicjalizacji bazy danych, konfiguracji replikacji oraz podłączania/odłączania węzłów;
- Wsparcie dla architektur ARM, X86, POWER i IBM Z;
- Implementacja algorytmu Raft została zoptymalizowana w celu minimalizacji opóźnień podczas zatwierdzania transakcji.
Źródło: opennet.ru
