Publikimi i rqlite 6.0, një DBMS e shpërndarë dhe tolerante ndaj dështimeve, e bazuar në SQLite

Rqlite 6.0, një sistem menaxhimi të të dhënave të shpërndara, është publikuar, i cili përdor SQLite si motor ruajtjeje dhe mundëson funksionimin e një klasteri të ruajtesh të sinkronizuara me njëra-tjetrën. Rqlite veçohet për thjeshtësinë e instalimit, shpërndarjes dhe mbështetjes së një ruajtjeje të shpërndarë të qëndrueshme, e cila është e ngjashme me etcd dhe Consul, por përdor një model relacional të punës me të dhëna në vend të formatit çelës/vlerë. Kodi i projektit është shkruar në gjuhën Go dhe shpërndahet nën licencën MIT.

Për të mbështetur të gjithë nodet në një gjendje të sinkronizuar, përdoret algoritmi i arritjes së konsensusit Raft. Rqlite përdor bibliotekën origjinale SQLite dhe driver-in e zakonshëm go-sqlite3, mbi të cilat funksionon një shtresë që përpunon kërkesat e klientëve, kryen replikimin në nodet e tjera dhe ndjek arritjen e konsensusit mbi zgjedhjen e nodit lider.

Ndryshimet nĂ« DB mund tĂ« bĂ«hen vetĂ«m nga nodi qĂ« Ă«shtĂ« zgjedhur si lider, por lidhjet me operacionet e shkrimit mund tĂ« drejtohen gjithashtu edhe nĂ« nodet e tjera tĂ« klasterit, tĂ« cilat do tĂ« kthejnĂ« adresĂ«n e liderit pĂ«r tĂ« ripĂ«rsĂ«ritur kĂ«rkesĂ«n (nĂ« versionin e ardhshĂ«m premtohet qĂ« tĂ« shtohet kalimi automatik i kĂ«rkesave tek lideri). Fokusimi kryesor Ă«shtĂ« nĂ« qĂ«ndrueshmĂ«ri, prandaj sistemi i menaxhimit tĂ« tĂ« dhĂ«nave Ă«shtĂ« nĂ« skalim vetĂ«m pĂ«r operacionet e leximit, ndĂ«rsa operacionet e shkrimit janĂ« pika e dobĂ«t. ËshtĂ« e mundur tĂ« fillosh njĂ« klaster rqlite nga njĂ« nod i vetĂ«m dhe kjo zgjidhje mund tĂ« pĂ«rdoret pĂ«r tĂ« organizuar aksesin nĂ« SQLite pĂ«rmes HTTP pa ofruar qĂ«ndrueshmĂ«ri.

Të dhënat SQLite në çdo nod ruhen jo në skedar, por në memorie. Në nivelin e shtresës me implementimin e protokollit Raft, mbahet një registër i të gjithë komandueseve SQLite, të cilat çojnë në ndryshimin e DB. Ky registër përdoret në replikim (replikim në nivelin e riprodhimit të kërkesave në nodet e tjera), fillimin e një nodi të ri ose rikuperimin pas humbjes së lidhjes. Për të reduktuar madhësinë e regjistrit, aplikohet paketimi automatik, i cili nisi pas një numri të caktuar ndryshimesh dhe rezulton në ruajtjen në disk të një snapshot-i, në lidhje me të cilin fillon të mbahet një regjistër i ri (gjendja e DB në memory është identike me snapshot-in + regjistrin e grumbulluar të ndryshimeve).

Veçoritë e rqlite:

  • ThjeshtĂ«sia e vendosjes sĂ« klasterit, pa nevojĂ«n pĂ«r njĂ« instalim tĂ« veçantĂ« tĂ« SQLite.
  • MundĂ«sia pĂ«r tĂ« marrĂ« shpejt njĂ« ruajtje SQL tĂ« replikuar.
  • Gati pĂ«r t'u pĂ«rdorur nĂ« projekte punuese (Production-grade).
  • Disponibiliteti i API HTTP(S), i cili lejon pĂ«rditĂ«simin e tĂ« dhĂ«nave nĂ« modĂ« grumbullore dhe pĂ«rcaktimin e nyjĂ«s udhĂ«heqĂ«se tĂ« klasterit. Gjithashtu ofrohet njĂ« ndĂ«rfaqe e linjĂ«s sĂ« komandave dhe mundĂ«sia e pĂ«rdorimit tĂ« bibliotekave tĂ« ndryshme klienti tĂ« krijuara pĂ«r SQLite.
  • Prania e njĂ« shĂ«rbimi pĂ«r pĂ«rcaktimin e nyjave tĂ« tjera, duke lejuar krijimin dinamik tĂ« klastereve.
  • MbĂ«shtetje pĂ«r enkriptimin e shkĂ«mbimit tĂ« tĂ« dhĂ«nave ndĂ«rmjet nyjave.
  • MundĂ«sia pĂ«r tĂ« konfiguruar nivelin e verifikimit tĂ« vlefshmĂ«risĂ« dhe koherencĂ«s sĂ« tĂ« dhĂ«nave gjatĂ« leximet.
  • MundĂ«si opsionale pĂ«r tĂ« lidhur nyjat nĂ« mĂ«nyrĂ« vetĂ«m pĂ«r lexim, qĂ« nuk marrin pjesĂ« nĂ« pĂ«rcaktimin e konsensusit dhe pĂ«rdoren pĂ«r tĂ« rritur shkallĂ«zimin e klasterit pĂ«r operacione lexim.
  • MbĂ«shtetje pĂ«r njĂ« formĂ« tĂ« vetme transaksionesh bazuar nĂ« bashkimin e komandave nĂ« njĂ« kĂ«rkesĂ« (transaksionet bazuar nĂ« BEGIN, COMMIT, ROLLBACK, SAVEPOINT dhe RELEASE nuk mbĂ«shteten).
  • MbĂ«shtetje pĂ«r krijimin e kopjeve rezervĂ« tĂ« nxehta.

Në versionin e ri janë bërë ndryshime të rëndësishme arkitektonike, të cilat synojnë të rrisin besueshmërinë e klasterit përmes përmirësimit të procesit të drejtimit të kërkesave për leximin dhe shkrimin në nyjat e duhur të klasterit. Nyjat rqlite tani mund të shumëfishojnë midis tyre disa lidhje logjike, duke përdorur lidhje TCP që janë vendosur midis nyjave nga protokolli Raft. Nëse një kërkesë kërkon autorizimin e nyjës udhëheqëse, por është dërguar në një nyjë ndihmëse, nyja ndihmëse mund të përcaktojë adresën e liderit dhe t'ia transmetojë klientit, pa kryer llogaritjen e konsensusit sipas protokollit Raft.

Ky ndryshim gjithashtu lejoni qĂ« tĂ« eliminohet komponenti i veçantĂ« pĂ«r sinkronizimin e tĂ« dhĂ«nave tĂ« metadatat dhe tĂ« pĂ«rjashtohet trajtimi i veçantĂ« i gjendjes Raft dhe metadatat. Nyjat ndihmĂ«se tani drejtojnĂ« kĂ«rkesat vetĂ«m kur Ă«shtĂ« e nevojshme, kur nevojitet tĂ« dihet adresa e nyjĂ«s udhĂ«heqĂ«se. NĂ« API Ă«shtĂ« ofruar mundĂ«sia pĂ«r tĂ« marrĂ« informacion mbi gjendjen e nyjave tĂ« tjera nĂ« klaster. NĂ« ndĂ«rfaqen e linjĂ«s sĂ« komandave Ă«shtĂ« shtuar komanda “.sysdump”.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster