Das Unternehmen Canonical Bedeutender Projektrelease (Distributed SQLite), ein SQL-Engine, die mit SQLite kompatibel ist und Datensynchronisation, automatische Wiederherstellung nach Ausfällen sowie Fehlertoleranz durch die Verteilung von Bearbeitern auf mehrere Knoten unterstützt. Die Datenbank wird in Form einer an C-Anwendungen angehängten Bibliothek realisiert und unter der Apache 2.0-Lizenz angeboten (das ursprüngliche SQLite wird als Public Domain bereitgestellt). Bindings für die Programmiersprache sind verfügbar. .
Die Bibliothek ist eine Erweiterung der bestehenden SQLite-Codebasis, die Unterstützung für ein Netzwerkprotokoll hinzufügt, um mehrere Instanzen einer Anwendung zu verbinden, die auf verschiedenen Hosts ausgeführt werden. Eine mit Dqlite gebaute Anwendung kann als eigenständiger, fehlertoleranter Cluster funktionieren, der nicht von externen Datenbanken abhängt. In der Praxis wird Dqlite von Canonical im Container-Management-System verwendet. Zu den Anwendungsmöglichkeiten der Bibliothek gehören auch die Erstellung von fehlertoleranten Internet-of-Things-Geräten und -Handlern in Systemen
.
Zur Gewährleistung der Konsistenz bei der Datenreplikation wird ein Konsensverfahren auf Basis eines Algorithmus angewendet , der in Projekten wie etcd, RethinkDB, CockroachDB und OpenDaylight eingesetzt wird. In Dqlite kommt eine eigene asynchrone Implementierung zum Einsatz , die in der Programmiersprache C geschrieben ist. Für das Multiplexen der Verbindungsbearbeitung und die Organisation des Starts von Koroutinen werden vorhandene Bibliotheken genutzt und .
Im Vergleich zu einem ähnlichen Projekt , bietet Dqlite vollständige Transaktionsunterstützung, kann sich mit beliebigen Projekten in C verbinden, erlaubt die Verwendung der Funktion time() und verwendet frame-basierte Replikation anstelle von SQL-Statements für die Replikation.
Eigenschaften von Dqlite:
- Durchführung aller Disk- und Netzwerkoperationen im asynchronen Modus;
- Verfügbarkeit eines Testsets zur Validierung der Datenintegrität;
- Niedriger Speicherverbrauch und effiziente Datenübertragung über das Netzwerk;
- Permanente Speicherung der Datenbank und des Transaktionsprotokolls auf der Festplatte (mit Möglichkeit zur Speicherung im Speicher);
- Schnelle Wiederherstellung nach Ausfällen;
- Stabiler CLI-Client in Go, der zur Initialisierung von Datenbanken, zur Konfiguration von Replikation und zum Verbinden/Trennen von Knoten verwendet werden kann;
- Unterstützung für die Architekturen ARM, X86, POWER und IBM Z;
- Die Implementierung des Raft-Algorithmus ist optimiert, um Latenzen bei der Bestätigung von Transaktionen zu minimieren.
Quelle: opennet.ru
