VĂ€lja anti jaotatud andmebaas rqlite 7.0, mis kasutab SQLite't salvestusmootorina ning vĂ”imaldab luua klastreid omavahel sĂŒnkroniseeritud andmehoidlate kohta. Rqlite'i eelisteks on lihtne paigaldus, arendamine ja jaotatud usaldusvÀÀrse andmehoidla haldamine, mis on sarnane etcd ja Consul'iga, kuid kasutades andmete töötlemisel relatsioonilist mudelit, mitte vĂ”tme/vÀÀrtuse formaati. Projekti kood on kirjutatud Go keeles ja jagatakse MIT litsentsi alusel.
KĂ”igi sĂ”lmede sĂŒnkroniseeritud oleku sĂ€ilitamiseks kasutatakse Rafti konsensuse saavutamise algoritmi. Rqlite kasutab originaalset SQLite'i raamatukogu ja draiverit go-sqlite3, millele pĂŒstitatakse vahekiht, mis töötleb kliendipĂ€ringuid, teostab replikatsiooni teistele sĂ”lmedele ja jĂ€lgib konsensuse saavutamist liidrisĂ”lme valiku osas.
Andmebaasidesse saavad muudatusi teha ainult liidri nod, kuid kirjutamisoperatsioonide ĂŒhendused vĂ”ivad suunata ka teiste klastrite nodide poole, mis tagastavad liidri aadressi pĂ€ringu kordamiseks (jĂ€rgmisel versioonil lubatakse automaatne liidri poole suunamine). Peamine rĂ”hk on tĂ”rketaluvusel, seega on andmebaasi skaleeritavuse fookus ainult lugemisoperatsioonidel, samas kui kirjutamisoperatsioonid on kitsaskohad. RQLite klastrit on vĂ”imalik kĂ€ivitada ĂŒhe nodina ja seda lahendust saab kasutada SQLite ligipÀÀsu korraldamiseks HTTP kaudu, ilma tĂ”rketalve pakkumiseta.
SQLite andmed salvestatakse igas sÔlmes mitte failis, vaid mÀlus. Raft-protokolli rakenduskiht sÀilitab kÔigi SQLite kÀskude ajalugu, mis toovad kaasa andmebaasi muudatused. Seda ajalugu kasutatakse replikatsiooniks (kÀsureplikatsioon teistel sÔlmedel), uue sÔlme kÀivitamisel vÔi taastamisel pÀrast sideme kaotust. Ajalooraamatute suuruse vÀhendamiseks kasutatakse automaatset pakkimist, mis kÀivitub pÀrast kindlaksmÀÀratud arvu muudatusi ja toob kaasa hetkpildi fikseerimise, mille pÔhjal algab uue ajalooraamatu pidamine (andmebaasi olek mÀlus on identne hetkpildi + kogunenud muudatuste ajalooga).
rqlite omadused:
- Klastri seadistamise lihtsus, ilma et oleks vaja eraldi SQLite paigaldust.
- VÔime kiiresti saada replikatsiooni SQL-andmebaasi.
- Valmidus kasutamiseks töös projektides (production-grade).
- HTTP(S) API olemasolu, mis vÔimaldab andmeid uuendada paketina ja mÀÀrata klastri juhtsÔlm. Samuti on saadaval kÀsurealiides ja klienditeegid erinevatele programmeerimiskeeltele.
- Teenuse olemasolu, mis vĂ”imaldab tuvastada teisi sĂ”lmi, vĂ”imaldades klastrite dĂŒnaamilist loomist.
- Andmevahetuse krĂŒptimise tugi sĂ”lmede vahel.
- VÔimalus seadistada andmete kehtivuse ja kooskÔla kontrolli taset lugemise ajal.
- Valikuline vĂ”imalus ĂŒhendada sĂ”lmi ainult lugemisreĆŸiimis, mis ei osale konsensuse mÀÀramisel ning mida kasutatakse klastri skaleeritavuse suurendamiseks lugemisoperatsioonides.
- Toetab oma tehingute vorme, mis pĂ”hinevad kĂ€skude rĂŒhmitamisel ĂŒhes pĂ€ringus (tehingud, mis pĂ”hinevad BEGIN, COMMIT, ROLLBACK, SAVEPOINT ja RELEASE ei ole toetatud).
- Toetab kuumi varukoopiaid.
Uues vÀljaandes:
- Lisatud tugi automaatklasterdamiseks rqlite'iga, kasutades uut sĂ”lmede tuvastamise teenust, mis vĂ”ib töötada hajutatud salvestustes Consul ja etcd. Teenus vĂ”imaldab rqlite sĂ”lmedel ĂŒksteist automaatselt leida â administraatoril on piisav lihtsalt kĂ€ivitada mitu sĂ”lme erinevates. serverites, mĂ€rkides Consuli vĂ”i etcd klastrite ĂŒldaadressi (nt âexample.com:8500â), ja sĂ”lmed kogunevad automaatselt klastrisse. JuhtsĂ”lm vĂ€rskendab perioodiliselt Consuli vĂ”i etcd andmehoidlas oma aadressi teavet, mis vĂ”imaldab hiljem liidrit muuta ilma teiste sĂ”lmede uuesti seadistamiseta, samuti uusi sĂ”lmi lisada isegi pĂ€rast liidri muutmist. Vanade sĂ”lmede avastamise teenuse (Discovery mode), mis töötas AWS Lambda baasil, tugi on lĂ”petatud.
- CLI liideses on lubatud korraga mĂ€rkida mitu hosti â kui esimene sĂ”lm osutub kĂ€ttesaamatuks, pöördutakse jĂ€rgmiste hostide poole.
- Kood, mis kĂ€sitleb rqlited kĂ€surea argumente, on ĂŒmber töötatud.
- Protocolli vananenud paketti protobuf ei kasutata enam.
- Raft protokolli rakenduses kasutatud BoltDB on asendatud bbolt'iga, mis on etcd projekti fork.
Allikas: opennet.ru
