Vabariiklik jaotatud andmebaasi rqlite 7.0 vĂ€ljalaskmine on toimunud. See kasutab andmete salvestamiseks SQLite'i ja vĂ”imaldab luua sĂŒmmeetriliselt sĂŒnkroniseeritud klastreid. rqlite eripĂ€ra on lihtne paigaldus, rakendamine ja jaotatud talitlushĂ€irete taluvate salvestuste haldamine, olles sarnane etcd ja Consul'iga, kuid kasutades andmete jaoks relatsioonilist mudelit, mitte vĂ”tme/vÀÀrtuse formaati. Projekti kood on kirjutatud Go keeles ja see levitatakse MIT litsentsi alusel.
KĂ”igi sĂ”lmede sĂŒnkroniseerituse tagamiseks kasutatakse Raft konsensusalgoritmi. Rqlite kasutab originaalset SQLite'i teeki ja go-sqlite3 draiverit, millele rakendatakse kiht, mis töötleb kliendi pĂ€ringuid, viib lĂ€bi replikatsiooni teistele sĂ”lmedele ja jĂ€lgib konsensuse saavutamist liidri valimisel.
Andmebaasi muudatusi tohib teha ainult sĂ”lm, mis on valitud liidriks, kuid kirjutamisoperatsioonide jaoks vĂ”ivad ĂŒhendused olla suunatud ka muudesse klastris olevatesse sĂ”lmedesse, mis tagastavad liidri aadressi pĂ€ringu kordamiseks (jĂ€rgmises versioonis lubatakse automaatne kutsumine liidrile). Peamine fookus on talitlushĂ€irete taluvusel, mistĂ”ttu andmebaas on skaleeritav ainult lugemisoperatsioonide osas, samas kui kirjutamisoperatsioonid on kitsaskohaks. Rqlite klastrit on vĂ”imalik kĂ€ivitada ka ĂŒhest sĂ”lmest ja seda lahendust saab kasutada SQLite'ile HTTP kaudu juurdepÀÀsu tagamiseks ilma talitlushĂ€irete taluvuseta.
SQLite andmed iga sĂ”lme suhtes hoitakse mitte failis, vaid mĂ€lus. Raft protokolli rakendamise kihis hoitakse ajalugu kĂ”igist SQLite'i kĂ€skudest, mis muudavad andmebaasi. Seda ajalugu kasutatakse replikatsiooni kĂ€igus (replikatsioon pĂ€ringute esitamiste tasandil teistel sĂ”lmedel), uue sĂ”lme kĂ€ivitamisel vĂ”i ĂŒhenduse kaotamise korral taastamiseks. Ajaloo suuruse vĂ€hendamiseks kasutatakse automaatset pakkimist, mis kĂ€ivitub pĂ€rast mÀÀratud muudatuste arvu ja viib uue ajaloosalvestuse kinnitamisele, mille suhtes algab uue ajaloosalvestuse pidamine (mĂ€lus olev andmebaasi olek on identne kinnitusega + akumuleeritud muudatuste ajalooga).
Rqlite'i eripÀrad:
- Klastri juurutamine on lihtne, ilma eraldi SQLite installimise vajaduseta.
- VÔimalus kiiresti saada replikatsiooniga SQL-lao.
- Valmis kasutamiseks töös projektides (production-grade).
- HTTP(S) API olemasolu, mis vĂ”imaldab andmeid paketireĆŸiimis uuendada ja mÀÀrata klastrite peanode. Samuti pakutakse kĂ€surea liidest ja klienditeeke erinevates programmeerimiskeeltes.
- Teenuse olemasolu teiste sĂ”lmede mÀÀramiseks, mis vĂ”imaldab luua klastreid dĂŒnaamiliselt.
- Toetatakse andmete vahetamise krĂŒpteerimist sĂ”lmede vahel.
- VÔimalus kohandada andmete lugemise kehtivuse ja jÀrjepidevuse kontrolli taset.
- Valikulise vĂ”imalusena saab liita sĂ”lmi ainult lugemisreĆŸiimis, mis ei osale konsensuse mÀÀramisel ja mida kasutatakse klastrite lugemisoperatsioonide skaleeritavuse suurendamiseks.
- Toetatakse oma tehinguvormi, mis pĂ”hineb kĂ€skude kogumisel ĂŒhes pĂ€ringus (BEGIN, COMMIT, ROLLBACK, SAVEPOINT ja RELEASE tehingud ei ole toetatud).
- Toetatakse kuumade varukoopiate tegemist.
Uues vÀljaandes:
- Automaatse klasterdamise rqlite tugi on lisatud, kasutades uut sĂ”lmede mÀÀramise teenust, mis vĂ”ib toimida hajutatud ladustamise pĂ”hjal, nagu Consul ja etcd. Teenus vĂ”imaldab rqlite sĂ”lmedel automaatselt ĂŒksteist leida â administraator peab lihtsalt kĂ€ivitama mitu sĂ”lme erinevatesse serverites, mÀÀrates jagatud aadressi klastrile Consulile vĂ”i etcd-le (nĂ€iteks âexample.com:8500â), ja sĂ”lmed ĂŒhendatakse automaatselt klastriks. PeasĂ”lm vĂ€rskendab regulaarselt Consuli vĂ”i etcdi andmesalvestuses oma aadressi, mis vĂ”imaldab hiljem muuta liidrit ilma, et oleks vajalik ĂŒlejÀÀnud sĂ”lmede seadistamine, samuti saab uusi sĂ”lmi lisada isegi pĂ€rast liidri vahetamist. Vanast sĂ”lmede mÀÀramise teenusest (Discovery mode), mis pĂ”hines AWS Lambdal, on loobutud.
- CLI liideses on lubatud mÀÀrata mitu hosti â kui esimene sĂ”lm osutub kĂ€ttesaamatuks, pöördutakse jĂ€rgmiste hostide poole.
- KĂ€surea argumentide analĂŒĂŒsi kood on ĂŒmber kirjutatud rqlited jaoks.
- Vanast protobuf pakettide kasutamisest on loobutud.
- Raft-protokolli rakenduses kasutatav BoltDB andmesalvestus on asendatud bboltiga, projekti etcd forking.
Allikas: opennet.ru
