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

De frijlitting fan 'e ferspraat DBMS rqlite 7.0 fûn plak, dy't SQLite brûkt as opslachmotor en kinne jo it wurk fan in kluster organisearje fan opslach dy't mei elkoar syngronisearre binne. 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 go-sqlite3-bestjoerder, wêrby't in laach wurdt lansearre dy't kliïntoanfragen ferwurket, replikaasje útfiert nei oare knooppunten en kontrolearret it berikken fan konsensus oer de kar fan in liedende knooppunt.

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 knopen), by it starten fan in nije node, of om te 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 de fixaasje fan in momintopname, yn relaasje 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 produksjeprojekten (produksjeklasse).
  • De oanwêzigens fan in HTTP(S) API wêrmei jo gegevens yn batchmodus kinne bywurkje en it liedende knooppunt fan it kluster bepale. In kommandorigelynterface en kliïntbiblioteken foar ferskate programmeartalen wurde ek levere.
  • 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.

Yn de nije release:

  • Tafoege stipe foar automatyske rqlite klustering mei help fan in nije node detection tsjinst dat kin wurkje op basis fan Consul en etcd ferspraat opslach. De tsjinst lit rqlite-knooppunten inoar automatysk fine - de behearder moat gewoan ferskate knooppunten op ferskate servers starte, en spesifisearje it gewoane Consul- of etcd-klusteradres (bygelyks "example.com:8500"), en de knopen sille automatysk wurde kombinearre yn in kluster. De liedende knooppunt update periodyk ynformaasje oer syn adres yn 'e Consul of etcd-opslach, wêrtroch jo de lieder dan kinne feroarje sûnder de needsaak om oare knooppunten opnij te konfigurearjen, en ek nije knooppunten tafoegje, sels nei't jo de lieder wizigje. De legacy Discovery-modustsjinst dy't rint op AWS Lambda is stopset.
  • De CLI-ynterface makket it mooglik om ferskate hosts tagelyk oan te jaan - as de earste knooppunt net beskikber is, wurde de folgjende hosts kontakt opnommen.
  • De koade foar it parsearjen fan rqlited kommandorigelarguminten is opnij bewurke.
  • It ferâldere protobuf-pakket is stopset.
  • De BoltDB-opslach brûkt yn 'e ymplemintaasje fan it Raft-protokol is ferfongen troch bbolt, in foarke fan it etcd-projekt.

Boarne: opennet.ru

Add a comment