Izdaja rqlite 7.0, porazdeljenega DBMS-a, odpornega na napake, ki temelji na SQLite

Potekala je izdaja porazdeljene DBMS rqlite 7.0, ki uporablja SQLite kot mehanizem za shranjevanje in vam omogoča organiziranje dela gruče iz medsebojno sinhroniziranih shramb. Ena od značilnosti rqlite je enostavnost namestitve, uvajanja in vzdrževanja porazdeljenega pomnilnika, odpornega na napake, ki je nekoliko podoben etcd in Consulu, vendar uporablja relacijski podatkovni model namesto formata ključ/vrednost. Projektna koda je napisana v Go in se distribuira pod licenco MIT.

Za ohranjanje vseh vozlišč v sinhroniziranem stanju se uporablja konsenzni algoritem Raft. Rqlite uporablja izvirno knjižnico SQLite in gonilnik go-sqlite3, na vrhu katerega se zažene sloj, ki obdeluje zahteve odjemalcev, izvaja replikacijo na druga vozlišča in spremlja doseganje soglasja o izbiri vodilnega vozlišča.

Spremembe podatkovne baze lahko izvaja samo vozlišče, ki je izbrano kot vodilno, vendar pa se lahko povezave z operacijami pisanja pošljejo tudi drugim vozliščem v gruči, ki bodo vrnile naslov vodilnega za ponovitev zahteve (v naslednji različici bodo obljubite, da boste dodali samodejno posredovanje zahtev vodji). Glavni poudarek je na toleranci napak, zato se DBMS meri le z operacijami branja, operacije pisanja pa so ozko grlo. Možno je zagnati gručo rqlite iz enega vozlišča in to rešitev je mogoče uporabiti za zagotavljanje dostopa do SQLite prek HTTP brez zagotavljanja tolerance napak.

Podatki SQLite na vsakem vozlišču niso shranjeni v datoteki, temveč v pomnilniku. Na nivoju sloja z implementacijo protokola Raft se vodi dnevnik vseh ukazov SQLite, ki vodijo do sprememb baze podatkov. Ta dnevnik se uporablja med replikacijo (replikacija na ravni reprodukcije zahtev na drugih vozliščih), pri zagonu novega vozlišča ali za obnovitev po izgubi povezljivosti. Za zmanjšanje velikosti dnevnika se uporablja samodejno pakiranje, ki se začne po določenem številu sprememb in vodi do fiksiranja posnetka, v zvezi s katerim se začne vzdrževati nov dnevnik (stanje baze podatkov v pomnilniku je enak posnetku + nakopičen dnevnik sprememb).

Lastnosti rqlite:

  • Enostavna uvedba gruče, brez potrebe po ločeni namestitvi SQLite.
  • Sposobnost hitrega pridobivanja podvojenega pomnilnika SQL.
  • Pripravljen za uporabo v proizvodnih projektih (production-grade).
  • Prisotnost API-ja HTTP(S), ki vam omogoča posodabljanje podatkov v paketnem načinu in določanje vodilnega vozlišča gruče. Na voljo so tudi vmesnik ukazne vrstice in odjemalske knjižnice za različne programske jezike.
  • Razpoložljivost storitve za prepoznavanje drugih vozlišč, ki vam omogoča dinamično ustvarjanje gruč.
  • Podpora za šifriranje izmenjave podatkov med vozlišči.
  • Možnost konfiguracije ravni preverjanja ustreznosti in doslednosti podatkov pri branju.
  • Izbirna možnost povezovanja vozlišč v načinu samo za branje, ki ne sodelujejo pri določanju soglasja in se uporabljajo za povečanje razširljivosti gruče za operacije branja.
  • Podpora za lastno obliko transakcij na podlagi združevanja ukazov v eni zahtevi (transakcije na podlagi BEGIN, COMMIT, ROLLBACK, SAVEPOINT in RELEASE niso podprte).
  • Podpora za ustvarjanje vročih varnostnih kopij.

V novi izdaji:

  • Dodana podpora za samodejno združevanje v gruče rqlite z uporabo nove storitve zaznavanja vozlišč, ki lahko deluje na podlagi porazdeljenega pomnilnika Consul in etcd. Storitev omogoča vozliščem rqlite, da se samodejno najdejo - skrbnik mora samo zagnati več vozlišč na različnih strežnikih, pri čemer navede skupni naslov gruče Consul ali etcd (na primer »example.com:8500«) in vozlišča bodo samodejno vzpostavljena. združeni v grozd. Vodilno vozlišče občasno posodablja podatke o svojem naslovu v shrambi Consul ali etcd, kar vam omogoča naknadno spremembo vodilnega brez potrebe po ponovni konfiguraciji drugih vozlišč, kot tudi dodajanje novih vozlišč tudi po zamenjavi vodilnega. Podedovana storitev načina odkrivanja, ki se izvaja na AWS Lambda, je bila ukinjena.
  • Vmesnik CLI omogoča določanje več gostiteljev hkrati - če prvo vozlišče ni na voljo, se vzpostavi stik z naslednjimi gostitelji.
  • Koda za razčlenjevanje argumentov ukazne vrstice rqlited je bila predelana.
  • Zastareli paket protobuf je bil ukinjen.
  • Pomnilnik BoltDB, ki se uporablja pri implementaciji protokola Raft, je nadomestil bbolt, razcep iz projekta etcd.

Vir: opennet.ru

Dodaj komentar