rqlite, ein hervorragendes, leichtgewichtiges verteiltes relationales DBMS

Si Sie suchen ein verteiltes DBMS das SQLite als Speicher-Engine verwendet, lassen Sie mich Ihnen das sagen rqlite ist das Richtige für dich, da es ermöglicht, die Arbeit eines Clusters aus miteinander synchronisierten Speichern zu organisieren.

Von den rqlite-Funktionen, einfache Installation, Implementierung und Wartung wird hervorgehoben verteilter Speicher fehlertolerant, ähnlich wie bei etcd und Consul, aber es verwendet ein relationales Datenmodell anstelle eines Schlüssel/Wert-Formats.

Über rqlite

Der Raft-Konsensalgorithmus wird verwendet, um alle Knoten synchron zu halten. Rqlite Verwenden Sie die Original-SQLite-Bibliothek und den go-sqlite3-Treiber, außerdem führt es eine Schicht aus, die Client-Anfragen verarbeitet, sich in anderen Knoten repliziert und den Konsens über die Wahl des Hauptknotens überwacht.

Änderungen an der Datenbank können nur von dem als Leader ausgewählten Knoten vorgenommen werden, aber die Verbindungen mit Schreiboperationen können an andere Knoten im Cluster geleitet werden, die die Adresse des Leiters zurückgeben, um die Anfrage zu wiederholen (in der nächsten Version versprechen sie eine automatische Weiterleitung des Anrufs an den Leiter).

Der Schwerpunkt liegt auf Fehlertoleranz, also das DBMS nur im Lesebetrieb skalieren, und Schreiboperationen sind der Flaschenhals. Es ist möglich, einen rqlite-Cluster von einem einzelnen Knoten aus auszuführen, und eine solche Lösung kann verwendet werden, um Zugriff auf SQLite über HTTP ohne Fehlertoleranz bereitzustellen.

SQLite-Daten in jedem Knoten werden sie nicht in einer Datei gespeichert, sondern im Speicher. Auf Schichtebene wird mit der Implementierung des Raft-Protokolls eine Aufzeichnung aller SQLite-Befehle geführt, die zu einer Änderung in der Datenbank führen.

Dieser Datensatz wird für die Replikation (Replikation auf Abfragewiedergabeebene zu anderen Knoten), beim Starten eines neuen Knotens oder zur Wiederherstellung nach einem Verbindungsverlust verwendet.

Um die Datensatzgröße zu reduzieren, wird ein automatisches Packen verwendet, das nach einer bestimmten Anzahl von Änderungen startet und zur Bestätigung eines Snapshots führt, gegen den ein neuer Datensatz beginnt (der Zustand der Datenbank im Speicher ist identisch mit Snapshot + angesammeltes Änderungsprotokoll).

Aus den rqlite-Funktionen:

  • Einfache Clusterbereitstellung, ohne dass eine separate SQLite-Installation erforderlich ist.
  • Möglichkeit, schnell replizierten SQL-Speicher zu erhalten.
  • Einsatzbereit in Produktionsprojekten.
  • Verfügbarkeit der HTTP (S) API, die das Aktualisieren von Daten im Batch-Modus und das Bestimmen des Leader-Knotens des Clusters ermöglicht. Eine Kommandozeilenschnittstelle und Clientbibliotheken für verschiedene Programmiersprachen werden ebenfalls bereitgestellt.
  • Das Vorhandensein eines Dienstes zum Definieren anderer Knoten, mit dem Sie dynamisch Cluster erstellen können.
  • Unterstützung für die Verschlüsselung des Datenaustauschs zwischen Knoten.
  • Die Möglichkeit, den Grad der Überprüfung auf Relevanz und Konsistenz der Daten beim Lesen anzupassen.
  • Optionale Möglichkeit, schreibgeschützte Knoten zu verbinden, die nicht an der Konsensfindung teilnehmen und verwendet werden, um die Skalierbarkeit des Clusters für Lesevorgänge zu erhöhen.
  • Unterstützung der nativen Transaktionsform basierend auf der Kombination von Befehlen in einer einzigen Anfrage (Transaktionen basierend auf BEGIN, COMMIT, ROLLBACK, SAVEPOINT und RELEASE werden nicht unterstützt).

Über rqlite 6.0

Die neue Version führt bedeutende Architekturänderungen ein, die auf eine Verbesserung der Cluster-Zuverlässigkeit abzielen durch Verbesserung des Prozesses zum Leiten von Lese- und Schreibanforderungen an die richtigen Clusterknoten.

Rqlite-Knoten jetzt kann mehrere logische Verbindungen multiplexen zwischen ihnen unter Verwendung der TCP-Verbindungen, die zwischen den Knoten durch das Raft-Protokoll hergestellt werden. Wenn die Anforderung die Autorität des führenden Knotens erfordert, aber an den sekundären Knoten gesendet wird, kann der sekundäre Knoten die Adresse des Führers bestimmen und sie an den Client übertragen, ohne die Raft-Konsensberechnung durchzuführen.

Durch die Änderung wurde auch die separate Komponente zum Synchronisieren von Metadaten entfernt und die separate Handhabung von Status und Metadaten durch Raft entfernt.

Sekundärknoten senden jetzt nur bei Bedarf Anfragen an den Lead-Knoten, wenn es notwendig ist, die Adresse des Lead-Knotens herauszufinden. Die API bietet die Möglichkeit, Informationen über den Status anderer Knoten im Cluster zu erhalten. Befehl Sysdump zur CLI hinzugefügt.

Schließlich wenn Sie mehr darüber wissen möchten oder konsultieren Sie die Installationsanweisungen und das Benutzerhandbuch, Sie können es tun über den Link unten.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.