Esitletud on rqlite 6.0 jaotatud andmebaasisĂŒsteemi versioon, mis kasutab SQLite andmehoidjana ja vĂ”imaldab luua klastreid, mis on omavahel sĂŒnkroniseeritud. rqlite peamisteks omadusteks on lihtne paigaldus, kĂ€itamine ja haldamine jaotatud tĂ”rkevaba andmehoidla puhul, mis sarnaneb etcd ja Consuliga, kuid kasutab rikkaad mudelit andmetega töötamiseks asemel vĂ”tme/vÀÀrtuse formaati. Projekti kood on kirjutatud Go keeles ja levitatakse MIT litsentsi all.
KĂ”igi sĂ”lmede sĂŒnkroniseeritud oleku sĂ€ilitamiseks kasutatakse Raft konsensusalgoritmi. Rqlite kasutab originaalset SQLite teeki ja standardset draiverit go-sqlite3, mille kohal töötab kihistus, mis töötleb kliendi pĂ€ringuid, teostab replikatsiooni teistesse sĂ”lmedesse ja jĂ€lgib konsensuse saavutamist juhtiva sĂ”lme osas.
Andmebaasi muutusi saab teha ainult juhtivalt valitud sĂ”lmel, kuid kirjutamisoperatsioonide ĂŒhendused vĂ”ivad olla suunatud ka teistele klasteri sĂ”lmedele, mis naasevad juhtiva aadressi, et korduda pĂ€ringut (jĂ€rgmises versioonis lubatakse automaatse juhtiva suunamise lisamise). Peamine tĂ€helepanu on suunatud tĂ”rkevabadusele, seetĂ”ttu on andmebaasisĂŒsteem skaleeritav ainult lugemise operatsioonide osas, samas kui kirjutamisoperatsioonid on kitsaskohaks. Rqlite klastrit on vĂ”imalik kĂ€ivitada ka ĂŒhelt sĂ”lmel, selline lahendus vĂ”ib vĂ”imaldada juurdepÀÀsu SQLite'ile HTTP kaudu ilma tĂ”rkevabaduse tagamiseta.
SQLite andmed igas sÔlmes ei hoita failis, vaid mÀlus. Rafti protokolli rakenduskiht sÀilitab logi kÔigist SQLite kÀskudest, mis toovad kaasa andmebaasi muutusi. Seda logi kasutatakse replikatsiooni jaoks (replikatsioon pÀringute taasesituse tasemel teistes sÔlmedes), uue sÔlme kÀivitamisel vÔi vÔrgu katkestuse taastamisel. Logi suuruse vÀhendamiseks kasutatakse automaatset pakendamist, mis kÀivitub pÀrast mÀÀratud arvu muudatusi ja viib salvestamise kettale seisu (snapshoti), mille suhtes algab uus logi (mÀluandmebaasi olek on identne snapshoti + kogunenud muudatuste logiga).
rqlite omadused:
- Klastri seadistamise lihtsus, ilma et oleks vaja eraldi SQLite paigaldust.
- VÔime kiiresti saada replikatsiooni SQL-andmebaasi.
- Valmis kasutamiseks töös projektides (Production-grade).
- Saadaval on HTTP(S) API, mis vÔimaldab andmete partii vÀrskendusi ja mÀÀrata klasteri juhtiva sÔlme. Samuti on saadaval kÀsuviiba liides ja erinevate klienditeekide kasutamise vÔimalus, mis on loodud SQLite jaoks.
- 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.
Uus versioon toob kaasa olulised arhitektuurilised muudatused, mis on suunatud klastrite usaldusvÀÀrsuse suurendamisele, parendades pĂ€ringute suunamise protsessi lugemiseks ja kirjutamiseks korrektsetele klasteri sĂ”lmedele. Rqlite sĂ”lmed saavad nĂŒĂŒd omavahel mitut loogilist ĂŒhendust multiteerida, kasutades TCP-ĂŒhendusi, mis on loodud sĂ”lmede vahel Rafti protokolliga. Kui pĂ€ring nĂ”uab juhtiva sĂ”lme Ă”igusi, kuid saadetakse teisesele sĂ”lmele, saab teine sĂ”lm mÀÀrata juhi aadressi ja edastada selle kliendile, ilma et oleks vaja Rafti protokolli jĂ€rgi konsensuse arvestust.
Muudatus vĂ”imaldas ka eemaldada eraldi komponendi metainformatsiooni sĂŒnkroniseerimiseks ning vĂ€listada Rafti ja metainformatsiooni eraldi töötlemise. Teised sĂ”lmed suunavad pĂ€ringud juhtivale sĂ”lmele ainult vajaduse korral, kui on vaja teada juhtiva sĂ”lme aadressi. API-s on saadaval teave teiste klasteri sĂ”lmede oleku kohta. KĂ€suviiba liideses on lisatud kĂ€sk â.sysdumpâ.
Allikas: opennet.ru
