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

Predstavljena je izdaja porazdeljene DBMS rqlite 6.0, ki uporablja SQLite kot mehanizem za shranjevanje in vam omogoča organiziranje dela gruče sinhroniziranih pomnilnikov. 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 standardni 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 naredi le vozlišče, ki je izbrano kot vodilno, vendar se lahko povezave s pisalnimi operacijami 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 samega 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 v bazi. Ta dnevnik se uporablja med replikacijo (replikacija na ravni reprodukcije zahtev na drugih vozliščih), zagonom novega vozlišča ali okrevanjem 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 na disku, v zvezi s katerim se začne voditi nov dnevnik (stanje baze podatkov v pomnilniku). je enak posnetku + zbranemu dnevniku sprememb).

Lastnosti rqlite:

  • Enostavna uvedba gruče, brez potrebe po ločeni namestitvi SQLite.
  • Sposobnost hitrega pridobivanja podvojenega pomnilnika SQL.
  • Pripravljen za uporabo v delovnih projektih (produkcijski razred).
  • Prisotnost API-ja HTTP(S), ki vam omogoča posodabljanje podatkov v paketnem načinu in določanje vodilnega vozlišča gruče. Zagotavlja tudi vmesnik ukazne vrstice in možnost uporabe različnih odjemalskih knjižnic, izdelanih za SQLite.
  • 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.

Nova izdaja uvaja pomembne arhitekturne spremembe, namenjene povečanju zanesljivosti gruče z izboljšanjem procesa usmerjanja zahtev za branje in pisanje v pravilna vozlišča gruče. Vozlišča rqlite lahko zdaj multipleksirajo več logičnih povezav med seboj z uporabo povezav TCP, vzpostavljenih med vozlišči s protokolom Raft. Če zahteva zahteva pooblastilo vodje, vendar je poslana sekundarnemu vozlišču, lahko sekundarno vozlišče določi naslov vodje in ga posreduje odjemalcu brez izvajanja izračunov soglasja Raft.

Sprememba je tudi odpravila potrebo po ločeni komponenti za sinhronizacijo metapodatkov in odpravila ločeno obravnavanje stanja in metapodatkov Raft. Sekundarna vozlišča zdaj pošiljajo zahteve vodilnemu vozlišču le, kadar je to potrebno, ko morajo izvedeti naslov vodilnega vozlišča. API nudi možnost pridobivanja informacij o stanju drugih vozlišč v gruči. Ukaz ».sysdump« je bil dodan vmesniku ukazne vrstice.

Vir: opennet.ru

Dodaj komentar