Das Unternehmen Canonical bedeutende Veröffentlichung des Projekts (Distributed SQLite), das einen mit SQLite kompatiblen eingebetteten SQL-Motor entwickelt, der Datenreplikation, automatischen Wiederherstellung nach AusfĂ€llen und Ausfallsicherheit durch die Verteilung von Handlern auf mehrere Knoten unterstĂŒtzt. Die Datenbank wird als an Anwendungen angebundene C-Bibliothek implementiert und steht unter der Lizenz Apache 2.0 (das ursprĂŒngliche SQLite wird als öffentliches Eigentum bereitgestellt). Es sind Bindings fĂŒr die Sprache verfĂŒgbar .
Die Bibliothek ist eine Erweiterung der bestehenden SQLite-Codebasis, die die UnterstĂŒtzung eines Netzwerkprotokolls hinzufĂŒgt, um mehrere Instanzen von Anwendungen, die auf verschiedenen Hosts ausgefĂŒhrt werden, miteinander zu verbinden. Eine mit Dqlite gebaute Anwendung kann als autarkes, ausfallsicheres Cluster fungieren, das nicht von externen Datenbanken abhĂ€ngt. In der Praxis wird Dqlite von Canonical im Container-Management-System verwendet . Zu den Anwendungsbereichen der Bibliothek gehört auch die Erstellung von ausfallsicheren Internet-of-Things-GerĂ€ten und -Verarbeitungen in Systemen
.
Um die Konsistenz bei der Datenreplikation zu gewĂ€hrleisten, wird eine Konsensfindungsmethode auf Basis des Algorithmus angewendet , die in Projekten wie etcd, RethinkDB, CockroachDB und OpenDaylight verwendet wird. In Dqlite wird eine eigene asynchrone Implementierung angewendet , geschrieben in C. FĂŒr die Multiplexierung der Verbindungsbehandlung und die Organisation des Starts von Koroutinen werden fertige Bibliotheken verwendet 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 nutzt eine auf Frames basierende Replikation anstelle einer auf SQL-AusdrĂŒcken basierenden Replikation.
Funktionen von Dqlite:
- AusfĂŒhrung aller Disk- und Netzwerkoperationen im asynchronen Modus;
- VerfĂŒgbarkeit eines Testsets zur Validierung der Datenkorrektheit;
- Geringer Speicherverbrauch und effizienter Datenaustausch im Netzwerk;
- Dauerhafte Speicherung der Datenbank und des Transaktionsprotokolls (mit der Möglichkeit der Speichercache);
- Schnelle Wiederherstellung nach AusfÀllen;
- Stabiler CLI-Client in Go, der zur Initialisierung der Datenbank, zur Konfiguration der Replikation und zum An- und Abkoppeln von Knoten verwendet werden kann;
- UnterstĂŒtzung von Architekturen ARM, X86, POWER und IBM Z;
- Die Umsetzung des Raft-Algorithmus wurde optimiert, um Verzögerungen bei der BestÀtigung von Transaktionen zu minimieren.
Quelle: opennet.ru
