ĂshtĂ« prezentuar versioni i ri i DB tĂ« shpĂ«rndarĂ« rqlite 6.0, i cili pĂ«rdor SQLite si motor ruajtjeje dhe lejon organizimin e punĂ«s sĂ« njĂ« klasteri me ruajtje tĂ« sinkronizuara. NjĂ« nga karakteristikat e rqlite Ă«shtĂ« thjeshtĂ«sia e instalimit, ngjyrĂ«s dhe mbajtjes sĂ« njĂ« ruajtjeje tĂ« shpĂ«rndarĂ« tĂ« qĂ«ndrueshme, e ngjashme me etcd dhe Consul, por qĂ« pĂ«rdor modelin relacional pĂ«r punĂ«n me tĂ« dhĂ«nat nĂ« vend tĂ« formateve ç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ë gjitha nyjat në një gjendje të sinkronizuar përdoret algoritmi i arritjes së konsensusit Raft. Rqlite përdor bibliotekën origjinale SQLite dhe drejtuesin standard go-sqlite3, mbi të cilët ngrihet një ndërfaqe që trajton kërkesat e klientëve, kryen replikim në nyja të tjera dhe ndjek arritjen e konsensusit për zgjedhjen e nyjës lidere.
Ndryshimet nĂ« DB mund tĂ« bĂ«hen vetĂ«m nga nyja qĂ« Ă«shtĂ« zgjedhur si lidere, por lidhjet me operacionet e shkruar mund tĂ« drejtohen edhe te nyjat e tjera tĂ« klasterit, tĂ« cilat do tĂ« kthejnĂ« adresĂ«n e liderit pĂ«r pĂ«rsĂ«ritjen e kĂ«rkesĂ«s (nĂ« versionin e ardhshĂ«m premtohet tĂ« shtohet kalimi automatik i kĂ«rkesave te lideri). Fokus i madh Ă«shtĂ« nĂ« qĂ«ndrueshmĂ«ri, prandaj DB pĂ«rshkallĂ«zohet vetĂ«m pĂ«r operacionet e leximit, ndĂ«rsa operacionet e shkruar janĂ« pika e ngushtĂ«. ĂshtĂ« e mundur tĂ« startohet njĂ« klaster rqlite nga njĂ« nyje dhe njĂ« zgjidhje e tillĂ« mund tĂ« pĂ«rdoret pĂ«r tĂ« organizuar aksesin nĂ« SQLite mbi HTTP pa ofruar qĂ«ndrueshmĂ«ri.
Të dhënat SQLite në çdo nyje ruhet jo në skedar, por në memorie. Në nivelin e shtresës me realizimin e protokollit Raft mbahet një log i të gjitha komandave SQLite, që shkaktojnë ndryshimin e DB. Ky log përdoret gjatë replikimit (replikimi në nivelin e riprodhimit të kërkesave në nyja të tjera), startimi i një nyjeje të re apo rikuperimi pas humbjes së lidhjes. Për të reduktuar madhësinë e logut, aplikohet paketimi automatik, i cili aktivizohet pas një numri të caktuar ndryshimesh dhe çon në regjistrimin në disk të një snapshot-i, në raport me të cilin fillon të mbahet një log i ri (gjendja e DB në memorie është identike me snapshot-in + logun e akumuluar të ndryshimeve).
Karakteristikat e rqlite:
- Thjeshtësia e shpërndarjes së klasterit, pa nevojën e instalimit të veçantë të SQLite.
- Mundësia për të marrë shpejt një depo SQL të replikuar.
- Gati për përdorim në projekte të punës (Production-grade).
- Disponueshmëria e një API HTTP(S), që lejon përditësimin e të dhënave në mënyrë grumbuj dhe përcaktimin e nyjës lidere të klasterit. Po ashtu, ofrohet një ndërfaqe e komandave në linjë dhe mundësia e përdorimit të librarive të ndryshme të klientit, të krijuara për SQLite.
- Disponibiliteti i shërbimit për të identifikuar node të tjera, duke lejuar krijimin dinamik të klasterëve.
- Mbështetje për enkriptimin e komunikimit të të dhënave midis node-ve.
- MundĂ«sia pĂ«r tĂ« konfigurur nivelin e verifikimit tĂ« аĐșŃŃалitetit dhe koherencĂ«s sĂ« tĂ« dhĂ«nave gjatĂ« leximit.
- Mundësi opsionale për të lidhur node në mënyrë vetëm për lexim, të cilat nuk marrin pjesë në përcaktimin e konsensusit dhe përdoren për të rritur shkallëzueshmërinë e klasterit për operacionet e leximit.
- Mbështetje për forma të veta të transaksioneve të bazuara në bashkimin 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ë nxehta.
Në edicionin e ri janë bërë ndryshime të rëndësishme arkitekturore, të drejtuara në përmirësimin e besueshmërisë së klasterit përmes përmirësimit të procesit të drejtimit të kërkesave për lexim dhe shkruar në nyja të sakta të klasterit. Nyjat rqlite tani mund të shumëfishojnë mes tyre disa lidhje logjike, duke përdorur lidhje TCP të vendosura midis nyjave përmes protokollit Raft. Nëse një kërkesë kërkon autorizime nga nyja lidere, por dërgohet te një nyjë sekondare, nyja sekondare mund të përcaktojë adresën e liderit dhe t'ia dërgojë klientit, pa kryer llogaritin e konsensusit përmes protokollit Raft.
Ndryshimi gjithashtu ka lejuar eliminimin e një komponenti të veçantë për sinkronizimin e metadatatve dhe përjashtimin e përpunimit të veçantë të gjendjes Raft dhe metadatatve. Nyjat sekondare tani drejtojnë kërkesat te nyja-lidere vetëm kur është e nevojshme, kur duhet të dinë adresën e nyjës lidere. Në API është ofruar mundësia për të marrë informacion rreth gjendjes së nyjave të tjera në klaster. Në ndërfaqen e komandës në linjë është shtuar komanda " .sysdump ".
Burimi: opennet.ru
