Lëshimi rqlite 7.0, një DBMS të shpërndarë dhe me disponueshmëri të lartë të bazuar në SQLite

U lançua DBMS-i i shpërndarë rqlite 7.0, i cili përdor SQLite si motor ruajtjeje dhe lejon organizimin e punës së një klasteri të magazinave të sinkronizuara. Një nga veçoritë e rqlite është thjeshtësia e instalimit, vendosjes dhe mirëmbajtjes së një ruajtjeje të shpërndarë me disponueshmëri të lartë, e ngjashme me etcd dhe Consul, por që përdor një model relational për punën me të dhënat 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ë mbajtur të gjithë nyjat në një gjendje të sinkronizuar, përdoret algoritmi i arritjes së konsensusit Raft. Rqlite përdor bibliotekën origjinale SQLite dhe drejtorin go-sqlite3, mbi të cilat operohet një ndërfaqe që përpunon kërkesat e klientëve, kryen replikimin në nyja të tjera dhe monitoron arritjen e konsensusit për zgjedhjen e nyjës udhëheqëse.

Ndryshimet në bazën e të dhënave mund të bëhen vetëm nga nyja e cila është zgjedhur si udhëheqëse, por lidhjet me operacionet e shkrimit mund të drejtohen edhe te nyja të tjera të klasterit, të cilat do të kthejnë adresën e udhëheqësit për të përsëritur kërkesën (në versionin e ardhshëm premtohet shtimi i kalimit automatik të kërkesave te udhëheqësi). Fokusimi kryesor është në disponueshmërinë e lartë, prandaj DBMS-i zgjeron vetëm operacionet e leximin, ndërsa operacionet e shkrimit janë pika ngushtë. Është e mundur të nisni një klaster rqlite nga një nyjë, dhe kjo zgjidhje mund të përdoret për të organizuar qasjen në SQLite përmes HTTP pa ofruar disponueshmëri të lartë.

Të dhënat SQLite në çdo nyje ruhen jo në skedar, por në memorje. Në nivelin e implementimit të protokollit Raft, mbahet një regjistër i të gjitha komandave SQLite që ndryshojnë bazën e të dhënave. Ky regjistër përdoret gjatë replikimit (replikimi në nivelin e riprodhimit të kërkesave në nyja të tjera), gjatë aktivizimit të një nyje të re ose për rimëkëmbjen pas humbjes së lidhjes. Për të reduktuar madhësinë e regjistrit, aplikohet një paketim automatik që fillon pas një numri të caktuar ndryshimesh dhe çon në fiksen e një snapshot-i, mbi të cilin fillon regjistri i ri (gjendja e bazës në memorje ë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 pune (production-grade).
  • Prania e API HTTP(S), e cila lejon rikthimin e të dhënave në grupe dhe përcaktimin e nyjës kryesore të klasterit. Gjithashtu ofrohet një ndërfaqe për linjat e komandave dhe biblioteka klienti për gjuhë të ndryshme programimi.
  • 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:

  • Shtuar mbështetje për klasterizimin automatike rqlite me përdorimin e shërbimit të ri për përcaktimin e nyjave, i cili mund të punojë mbi ruajtjet e shpërndara Consul dhe etcd. Shërbimi lejon nyjat rqlite të gjejnë njëra-tjetrën automatikisht — administratorit i mjafton të nisë disa nyja në vende të ndryshme, sistemet, duke specifikuar adresën përbashkët të klasterit Consul ose etcd (p.sh. "example.com:8500"), dhe nyjat automatikisht do të kombinohen në një klaster. Nyja kryesore përditëson periodikisht në ruajtjen Consul ose etcd informacionin mbi adresën e saj, duke lejuar ndryshimin e liderit pa nevojën për ri-konfigurimin e nyjave të tjera, si dhe shtimin e nyjave të reja edhe pas ndryshimit të liderit. Mbështetja për shërbimin e vjetër të përcaktimit të nyjave (Discovery mode), që funksionon mbi bazën e AWS Lambda, është ndalur.
  • Në ndërfaqen CLI është lejuar përcaktimi i disa hosteve njëherësh — nëse nyja e parë nuk është e aksesueshme, do të ndërpritet për të vizituar hostet e tjerë.
  • Rishikuar kodi për analizën e argumenteve të linjës së komandës rqlited.
  • Këtu është ndaluar përdorimi i paketës së vjetëruar protobuf.
  • Ruajtja BoltDB, që përdoret në implementimin e protokollit Raft, është zëvendësuar me bbolt, një fork nga projekti etcd.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster