Lëshimi i rqlite 7.0, një DBMS e shpërndarë, tolerante ndaj gabimeve bazuar në SQLite

U bë lëshimi i DBMS rqlite 7.0 i shpërndarë, i cili përdor SQLite si një motor ruajtjeje dhe ju lejon të organizoni punën e një grupi nga depo të sinkronizuara me njëri-tjetrin. Një nga veçoritë e rqlite është lehtësia e instalimit, vendosjes dhe mirëmbajtjes së një ruajtjeje të shpërndarë tolerante ndaj gabimeve, disi e ngjashme me etcd dhe Consul, por duke përdorur një model të dhënash relacionale në vend të një formati çelës/vlerë. Kodi i projektit është shkruar në Go dhe shpërndahet nën licencën MIT.

Për të mbajtur të gjitha nyjet në një gjendje të sinkronizuar, përdoret algoritmi i konsensusit Raft. Rqlite përdor bibliotekën origjinale SQLite dhe drejtuesin go-sqlite3, në krye të të cilit hapet një shtresë që përpunon kërkesat e klientit, kryen replikimin në nyje të tjera dhe monitoron arritjen e konsensusit për zgjedhjen e një nyje drejtuese.

Ndryshimet në bazën e të dhënave mund të bëhen vetëm nga nyja që përzgjidhet si lider, por lidhjet me operacionet e shkrimit mund të dërgohen edhe në nyje të tjera në grup, të cilat do të kthejnë adresën e liderit për të përsëritur kërkesën (në versionin tjetër ata premtimi për të shtuar përcjelljen automatike të kërkesave te lideri). Theksi kryesor është në tolerancën e gabimeve, kështu që DBMS shkallëzohet vetëm me operacionet e leximit dhe operacionet e shkrimit janë pengesa. Është e mundur të ekzekutohet një grup rqlite nga një nyje e vetme dhe kjo zgjidhje mund të përdoret për të siguruar akses në SQLite përmes HTTP pa ofruar tolerancë ndaj gabimeve.

Të dhënat SQLite në secilën nyje nuk ruhen në një skedar, por në memorie. Në nivelin e shtresës me zbatimin e protokollit Raft, mbahet një regjistër i të gjitha komandave SQLite që çojnë në ndryshime në bazën e të dhënave. Ky regjistër përdoret gjatë replikimit (përsëritje në nivelin e riprodhimit të kërkesave në nyje të tjera), kur fillon një nyje e re, ose për të rikuperuar nga humbja e lidhjes. Për të zvogëluar madhësinë e regjistrit, përdoret paketimi automatik, i cili fillon pas një numri të caktuar ndryshimesh dhe çon në fiksimin e një fotografie, në lidhje me të cilën fillon të mbahet një regjistër i ri (gjendja e bazës së të dhënave në memorje është identike me fotografinë e çastit + regjistrin e akumuluar të ndryshimeve).

Karakteristikat e rqlite:

  • Lehtë për të vendosur një grup, pa pasur nevojë për një instalim të veçantë të SQLite.
  • Aftësia për të marrë me shpejtësi ruajtjen e përsëritur SQL.
  • Gati për përdorim në projektet e prodhimit (prodhimi-grade).
  • Prania e një API HTTP(S) që ju lejon të përditësoni të dhënat në modalitetin e grupit dhe të përcaktoni nyjen kryesore të grupit. Ofrohet gjithashtu një ndërfaqe e linjës së komandës dhe bibliotekat e klientëve për gjuhë të ndryshme programimi.
  • Disponueshmëria e një shërbimi për identifikimin e nyjeve të tjera, duke ju lejuar të krijoni grupe në mënyrë dinamike.
  • Mbështetje për kodimin e shkëmbimit të të dhënave midis nyjeve.
  • Aftësia për të konfiguruar nivelin e kontrollit të rëndësisë dhe konsistencës së të dhënave gjatë leximit.
  • Aftësia opsionale për të lidhur nyjet në modalitetin vetëm për lexim, të cilat nuk marrin pjesë në përcaktimin e konsensusit dhe përdoren për të rritur shkallëzimin e grupit për operacionet e leximit.
  • Mbështetje për formën tuaj të transaksioneve bazuar në kombinimin e komandave në një kërkesë (transaksionet e bazuara në BEGIN, COMMIT, ROLLBACK, SAVEPOINT dhe RELEASE nuk mbështeten).
  • Mbështetje për krijimin e kopjeve rezervë të nxehtë.

Në publikimin e ri:

  • Mbështetje e shtuar për grumbullimin automatik rqlite duke përdorur një shërbim të ri të zbulimit të nyjeve që mund të funksionojë në bazë të ruajtjes së shpërndarë të Konsullit dhe etj. Shërbimi lejon që nyjet rqlite të gjejnë automatikisht njëri-tjetrin - administratori thjesht duhet të lëshojë disa nyje në serverë të ndryshëm, duke specifikuar adresën e përbashkët të grupit të Konsullit ose etcd (për shembull, "example.com:8500"), dhe nyjet do të jenë automatikisht të kombinuara në një grup. Nyja kryesore përditëson periodikisht informacionin për adresën e saj në ruajtjen e Konsullit ose etcd, gjë që ju lejon të ndryshoni më pas drejtuesin pa pasur nevojë të rikonfiguroni nyjet e tjera, si dhe të shtoni nyje të reja edhe pas ndryshimit të liderit. Shërbimi i vjetër i modalitetit Discovery që funksionon në AWS Lambda është ndërprerë.
  • Ndërfaqja CLI lejon specifikimin e disa hosteve në të njëjtën kohë - nëse nyja e parë nuk është e disponueshme, hostet e ardhshëm do të kontaktohen.
  • Kodi për analizimin e argumenteve të linjës së komandës rqlited është ripunuar.
  • Paketa e vjetëruar protobuf është ndërprerë.
  • Magazinimi BoltDB i përdorur në zbatimin e protokollit Raft është zëvendësuar nga bbolt, një pirun nga projekti etcd.

Burimi: opennet.ru

Shto një koment