Dqlite 1.0, eine verteilte Version von SQLite von Canonical, ist verfügbar

Kanonisches Unternehmen опубликовала bedeutende Projektveröffentlichung Dqlite 1.0 (Distributed SQLite), das eine SQLite-kompatible eingebettete SQL-Engine entwickelt, die Datenreplikation, automatische Wiederherstellung nach Fehlern und Fehlertoleranz durch die Verteilung von Handlern auf mehrere Knoten unterstützt. Das DBMS wird in Form einer C-Bibliothek implementiert, die an Anwendungen und angehängt ist vertrieben von unter der Apache 2.0-Lizenz (das Original-SQLite wird gemeinfrei bereitgestellt). Sprachbindungen verfügbar Go.

Die Bibliothek ist ein Add-on zur bestehenden SQLite-Codebasis, das Netzwerkprotokollunterstützung für die Verbindung mehrerer Instanzen einer Anwendung hinzufügt, die auf verschiedenen Hosts ausgeführt wird. Eine mit Dqlite kompilierte Anwendung kann als eigenständiger fehlertoleranter Cluster fungieren, unabhängig von externen DBMS. In der Praxis wird Dqlite von Canonical in seinem Container-Management-System verwendet LXD. Zu den Einsatzgebieten der Bibliothek zählt auch die Erstellung fehlertoleranter Internet-of-Things-Geräte und -Prozessoren in Systemen
Edge- Berechnungen.

Um die Konsistenz bei der Datenreplikation sicherzustellen, wird eine algorithmusbasierte Konsensmethode verwendet Raft, das in Projekten wie etcd, RethinkDB, CockroachDB und OpenDaylight verwendet wird. Dqlite verwendet eine eigene asynchrone Implementierung Handwerk, geschrieben in C-Sprache. Vorgefertigte Bibliotheken werden verwendet, um die Verbindungsverarbeitung zu multiplexen und den Start von Coroutinen zu organisieren libuv и libco.

Im Vergleich zu einem ähnlichen Projekt rqliteDqlite bietet vollständige Transaktionsunterstützung, kann mit jedem C-Projekt kommunizieren, ermöglicht die Verwendung der time()-Funktion und verwendet Frame-basierte Replikation anstelle von SQL-Übersetzungs-basierter Replikation.

Funktionen von Dqlite:

  • Führen Sie alle Festplatten- und Netzwerkvorgänge asynchron aus;
  • Verfügbarkeit eines Testsatzes zur Bestätigung der Richtigkeit der Daten;
  • Geringer Speicherverbrauch und effizienter Datenaustausch über das Netzwerk;
  • Permanente Speicherung der Datenbank und des Transaktionsprotokolls auf der Festplatte (mit der Möglichkeit der Zwischenspeicherung im Speicher);
  • Schnelle Wiederherstellung nach Ausfällen;
  • Stabiler CLI-Client in der Go-Sprache, der zum Initialisieren der Datenbank, zum Konfigurieren der Replikation und zum Verbinden/Trennen von Knoten verwendet werden kann;
  • Unterstützt ARM-, X86-, POWER- und IBM Z-Architekturen;
  • Die Implementierung des Raft-Algorithmus ist optimiert, um Verzögerungen beim Festschreiben von Transaktionen zu minimieren.

Source: opennet.ru

Kommentar hinzufügen