Verëffentlechung vun rqlite 6.0, e verdeelt, Feeler-tolerant DBMS baséiert op SQLite

D'Verëffentlechung vum verdeelt DBMS rqlite 6.0 gëtt presentéiert, deen SQLite als Späichermotor benotzt an Iech erlaabt d'Aarbecht vun engem Cluster vu synchroniséierten Späicheren ze organiséieren. Ee vun de Fonctiounen vun rqlite ass d'Liichtegkeet vun Installatioun, Détachement an Ënnerhalt vun engem verdeelt Feeler-tolerant Stockage, e bëssen ähnlech ze etcd an Consul, awer mat engem relational Datemodell amplaz vun engem Schlëssel / Wäert Format. De Projet Code ass a Go geschriwwen a verdeelt ënner der MIT Lizenz.

Fir all Noden an engem synchroniséierten Zoustand ze halen, gëtt de Raft Konsens Algorithmus benotzt. Rqlite benotzt d'Original SQLite Bibliothéik an de Standard go-sqlite3 Chauffer, op deem eng Schicht lancéiert gëtt, déi Client Ufroe veraarbecht, Replikatioun op aner Wirbelen ausféiert an d'Erreeche vum Konsens iwwer d'Wiel vun engem féierende Node iwwerwaacht.

Ännerunge vun der Datebank kënnen nëmme vum Node gemaach ginn, deen als Leader ausgewielt gëtt, awer Verbindunge mat Schreifoperatioune kënnen och op aner Wirbelen am Cluster geschéckt ginn, déi d'Adress vum Leader zréckginn fir d'Ufro ze widderhuelen (an der nächster Versioun si se verspriechen automatesch Expeditioun vun Ufroen un de Leader ze addéieren). Den Haaptaccent ass op Feeler Toleranz, sou datt d'DBMS nëmme mat Liesoperatiounen skaléiert, a Schreifoperatioune sinn de Flaschenhals. Et ass méiglech en rqlite Cluster aus engem eenzegen Node ze lafen an dës Léisung kann benotzt ginn fir Zougang zu SQLite iwwer HTTP ze bidden ouni Feeler Toleranz ze bidden.

D'SQLite Daten op all Node ginn net an enger Datei gespäichert, awer an der Erënnerung. Um Layer-Niveau mat der Ëmsetzung vum Raft-Protokoll gëtt e Log vun all SQLite Kommandoen, déi zu Verännerungen an der Datebank féieren. Dëse Log gëtt während der Replikatioun benotzt (Replikatioun um Niveau vun der Reproduktioun vun Ufroen op aner Wirbelen), en neien Node unzefänken oder sech vun engem Verloscht vu Konnektivitéit erholen. Fir d'Gréisst vum Logbuch ze reduzéieren, gëtt automatesch Verpakung benotzt, déi no enger spezifizéierter Unzuel vun Ännerungen ufänkt a féiert zu engem Snapshot op der Disk fixéiert, a Relatioun mat deem en neie Log ufänkt ze halen (den Zoustand vun der Datebank an der Erënnerung ass identesch mam Snapshot + de akkumuléierte Changement Log).

Features vun rqlite:

  • Einfach e Cluster z'installéieren, ouni de Besoin fir eng separat SQLite Installatioun.
  • D'Kapazitéit fir séier replizéiert SQL Späichere ze kréien.
  • Prett fir ze benotzen an Aarbechtsprojeten (Produktiounsgrad).
  • D'Präsenz vun enger HTTP(S) API déi Iech erlaabt Daten am Batchmodus ze aktualiséieren an de féierende Node vum Cluster ze bestëmmen. Et bitt och eng Kommandozeil-Interface an d'Fäegkeet fir verschidde Clientbibliothéiken ze benotzen fir SQLite gebaut.
  • Disponibilitéit vun engem Service fir aner Wirbelen z'identifizéieren, erlaabt Iech Cluster dynamesch ze kreéieren.
  • Ënnerstëtzung fir Verschlësselungsdatenaustausch tëscht Noden.
  • D'Kapazitéit fir den Niveau ze konfiguréieren fir d'Relevanz an d'Konsistenz vun den Daten beim Liesen ze kontrolléieren.
  • Optional Fäegkeet fir Wirbelen am Read-only Modus ze verbannen, déi net un der Bestëmmung vum Konsens deelhuelen a benotzt gi fir d'Skalierbarkeet vum Cluster fir Liesoperatiounen ze erhéijen.
  • Ënnerstëtzung fir Är eege Form vun Transaktiounen baséiert op der Kombinatioun vun Kommandoen an enger Ufro (Transaktioune baséiert op BEGIN, COMMIT, ROLLBACK, SAVEPOINT a RELEASE ginn net ënnerstëtzt).
  • Ënnerstëtzung fir Hot Backups ze kreéieren.

Déi nei Verëffentlechung stellt bedeitend architektonesch Ännerunge vir, déi zielt fir d'Zouverlässegkeet vum Cluster ze erhéijen andeems de Prozess vun der Routing vu Lies- a Schreifufroen op déi richteg Clusternoden verbessert gëtt. rqlite Node kënnen elo multiplexéiere vu multiple logesche Verbindunge matenee mat TCP Verbindungen, déi tëscht Noden vum Raft Protokoll etabléiert sinn. Wann eng Demande Leader Autoritéit erfuerdert, awer op e sekundären Node geschéckt gëtt, kann de sekundäre Node d'Adress vum Leader bestëmmen an un de Client weiderginn ouni Raft Konsens Berechnungen ze maachen.

D'Ännerung éliminéiert och de Besoin fir eng separat Metadaten-Synchroniséierungskomponent an eliminéiert separat Handhabung vu Raft-Staat a Metadaten. Sekundär Node schécken elo Ufroen un de Leader Node nëmmen wann néideg, wa se d'Adress vum Leader Node erausfannen mussen. D'API bitt d'Fäegkeet Informatiounen iwwer den Zoustand vun anere Wirbelen am Cluster ze kréien. De Kommando ".sysdump" gouf op d'Command Line Interface bäigefüügt.

Source: opennet.ru

Setzt e Commentaire