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
