Release fan rqlite 6.0, in ferdielde fouttolerante DBMS basearre op SQLite

De frijlitting fan 'e ferspraat DBMS rqlite 6.0 wurdt presintearre, dy't SQLite as opslachmotor brûkt en jo it wurk fan in kluster fan syngronisearre opslach kinne organisearje. Ien fan de skaaimerken fan rqlite is it gemak fan ynstallaasje, ynset en ûnderhâld fan in ferspraat fault-tolerant opslach, wat fergelykber mei etcd en Consul, mar mei help fan in relational gegevens model ynstee fan in kaai / wearde opmaak. De projektkoade is skreaun yn Go en ferspraat ûnder de MIT-lisinsje.

Om alle knopen yn in syngronisearre steat te hâlden, wurdt it Raft-konsensusalgoritme brûkt. Rqlite brûkt de orizjinele SQLite-bibleteek en de standert go-sqlite3-bestjoerder, wêrby't in laach wurdt lansearre dy't kliïntoanfragen ferwurket, replikaasje útfiert nei oare knopen en kontrolearret it berikken fan konsensus oer de kar fan in liedende node.

Feroarings yn 'e databank kinne allinich makke wurde troch de knooppunt dy't as lieder selektearre is, mar ferbiningen mei skriuwoperaasjes kinne ek stjoerd wurde nei oare knooppunten yn it kluster, wat it adres fan' e lieder werombringt om it fersyk te werheljen (yn 'e folgjende ferzje se tasizze om automatysk trochstjoere fan fersiken oan de lieder ta te foegjen). De wichtichste klam leit op fouttolerânsje, sadat de DBMS allinich skalen mei lêsoperaasjes, en skriuwoperaasjes binne de knelpunt. It is mooglik om in rqlite-kluster út te fieren fanút ien knooppunt en dizze oplossing kin brûkt wurde om tagong te jaan ta SQLite oer HTTP sûnder fouttolerânsje te jaan.

De SQLite-gegevens op elke node wurde net opslein yn in bestân, mar yn it ûnthâld. Op it laachnivo mei de ymplemintaasje fan it Raft-protokol wurdt in log fan alle SQLite-kommando's hâlden dy't liede ta feroaringen yn 'e databank. Dit log wurdt brûkt by replikaasje (replikaasje op it nivo fan it reprodusearjen fan fersiken op oare knooppunten), it begjinnen fan in nije knooppunt, of it herstellen fan in ferlies fan ferbining. Om de grutte fan it log te ferminderjen, wurdt automatyske ferpakking brûkt, dy't begjint nei in spesifisearre oantal wizigingen en liedt ta dat in momintopname op skiif fêstmakke wurdt, yn relaasje ta wêrmei't in nij log begjint te hâlden (de steat fan 'e databank yn it ûnthâld is identyk oan it momintopname + it opboude wizigingslog).

Funksjes fan rqlite:

  • Maklik om in kluster yn te setten, sûnder de needsaak foar in aparte SQLite-ynstallaasje.
  • Mooglikheid om fluch replikearre SQL-opslach te krijen.
  • Klear foar gebrûk yn wurkprojekten (Produksje-graad).
  • De oanwêzigens fan in HTTP(S) API wêrmei jo gegevens yn batchmodus kinne bywurkje en it liedende knooppunt fan it kluster bepale. It biedt ek in kommandorigelynterface en de mooglikheid om ferskate kliïntbiblioteken te brûken boud foar SQLite.
  • Beskikberens fan in tsjinst foar it identifisearjen fan oare knopen, wêrtroch jo klusters dynamysk kinne oanmeitsje.
  • Stipe foar it fersiferjen fan gegevensútwikseling tusken knopen.
  • Mooglikheid om it nivo fan kontrolearjen fan de relevânsje en konsistinsje fan gegevens by it lêzen yn te stellen.
  • Opsjonele mooglikheid om knooppunten te ferbinen yn allinich-lêsmodus, dy't net meidwaan oan it bepalen fan konsensus en wurde brûkt om de skalberens fan it kluster te fergrutsjen foar lêsoperaasjes.
  • Stipe foar jo eigen foarm fan transaksjes basearre op it kombinearjen fan kommando's yn ien fersyk (transaksjes basearre op BEGIN, COMMIT, ROLLBACK, SAVEPOINT en RELEASE wurde net stipe).
  • Stipe foar it meitsjen fan hot backups.

De nije release yntroduseart wichtige arsjitektoanyske feroarings dy't rjochte binne op it fergrutsjen fan klusterbetrouberens troch it ferbetterjen fan it proses fan routing fan lês- en skriuwfersiken nei de juste klusterknooppunten. rqlite-knooppunten kinne no meardere logyske ferbiningen ûnderinoar multiplexearje mei TCP-ferbiningen dy't fêststeld binne tusken knopen troch it Raft-protokol. As in fersyk fereasket lieder autoriteit, mar wurdt stjoerd nei in sekundêre knooppunt, de sekundêre knooppunt kin bepale de lieder syn adres en trochjaan oan de klant sûnder in útfiere Raft konsensus berekkeningen.

De feroaring ek eliminearre de needsaak foar in apart metadata syngronisaasje komponint en eliminearre aparte ôfhanneling fan Raft steat en metadata. Sekundêre knooppunten stjoere no allinich oanfragen nei it liederknooppunt as it nedich is, as se it adres fan it liederknooppunt moatte útfine. De API jout de mooglikheid om ynformaasje te krijen oer de steat fan oare knopen yn it kluster. It kommando ".sysdump" is tafoege oan de kommandorigelynterface.

Boarne: opennet.ru

Add a comment