Lansohet rqlite 7.0, një sistem i shpërndarë i menaxhimit të bazës së të dhënave që përdor SQLite si motor ruajtjeje dhe lejon organizimin e një klasteri me depo të sinkronizuara mes tyre. Një nga karakteristikat e rqlite është thjeshtësia e instalimit, shpërndarjes dhe mbështetjes së një depoje të shpërndarë me qëndrueshmëri, njësoj si etcd dhe Consul, por që përdor modelin relacional 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ë gjitha nyjat në një gjendje të sinkronizuar, përdoret algoritmi i arrijes së konsensusit Raft. Rqlite përdor bibliotekën origjinale SQLite dhe driverin go-sqlite3, mbi të cilat shkarkohet një ndërfaqe që trajton kërkesat e klientëve, kryen replikimin në nyjat e tjera dhe ndjek arritjen e konsensusit për zgjedhjen e nyjës lidere.
Ndryshimet në bazën e të dhënave mund të kryhen vetëm nga nyja e cila është zgjedhur si lider, por lidhjet me operacionet e shkrimit 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 se do të shtohet automatikisht redirektimi i kërkesave te lideri). Theksi i madh vihet mbi qëndrueshmërinë, ndaj DBMS zgjerohet vetëm sipas operacioneve të leximit, ndërsa operacionet e shkrimit janë pika e ngushtë. Është e mundur të startohet një klaster rqlite nga një nyje e vetme, dhe ky zgjidhje mund të përdoret për të organizuar aksesin në SQLite sipas HTTP pa ofruar qëndrueshmëri.
Të dhënat SQLite në çdo nyje ruhen jo në skedar, por në kujtesë. Në nivelin e shtresës me implementimin e protokollit Raft bëhet një regjistër i të gjitha komandave SQLite që çojnë në ndryshimin e bazës së të dhënave. Ky regjistër përdoret gjatë replikimit (replikimi në nivelin e riprodhimit të kërkesave në nyje të tjera), kur aktivizohet një nyje e re ose për rikuperimin pas humbjes së lidhshmërisë. Për të reduktuar madhësinë e regjistrit aplikohet paketimi automatik, i cili aktivizohet pas një numri të caktuar ndryshimesh dhe çon në regjistrimin e një snapshot-i, në lidhje me të cilin fillon të mbahet një regjistër i ri (gjendja e bazës në kujtesë është identike me snapshot-in + regjistrin e ndryshimeve të grumbulluara).
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 t'u përdorur në projekte pune (produksion).
- Prania e një API HTTP(S) që lejon përditësimin e të dhënave në modalitetin e paketës dhe përcaktimin e nyjës udhëheqëse të klasterit. Gjithashtu, ofrohet një ndërfaqe e linjës së komandës dhe libra klienti për gjuhë të ndryshme programimi.
- 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ë lëshimin e ri:
- Shtuar mbështetje për klasterimin automatik rqlite duke përdorur shërbimin e ri për identifikimin e node-ve, i cili mund të funksionojë mbi ruajtjen e shpërndarë Consul dhe etcd. Shërbimi lejon që node-t e rqlite të gjejnë njëri-tjetrin automatikisht — administratori ka nevojë vetëm të nisë disa node në mënyra të ndryshme. serverë, duke treguar adresën e përgjithshme të klashtit Consul ose etcd (p.sh., "example.com:8500"), node-t do të bashkohen automatikisht në klasht. Node kryesor përditëson periodikisht në depozitat Consul ose etcd informacionin për adresën e tij, duke lejuar që më pas të ndryshohet lideri pa pasur nevojë për rikonfigurim të node-ve të tjera, si dhe të shtohen node të reja edhe pas ndryshimit të liderit. Mbështetje për shërbimin e vjetër të përk discovery (Discovery mode) i cili punonte mbi bazën e AWS Lambda, është ndërprerë.
- Në ndërfaqen CLI, lejohet tregimi i disa hosteve menjëherë — nëse node-i i parë është i padisponueshëm, do të bëhet thirrje për hostet e tjerë.
- Kodi për analizimin e argumenteve të linjës së komandës rqlited është rinegjuar.
- Përdorimi i paketës së vjetër protobuf është ndërprerë.
- Depozita BoltDB e përdorur në zbatimin e protokollit Raft është zëvendësuar me bbolt, një fork nga projekti etcd.
Burimi: opennet.ru
