Išleista rqlite 6.0, paskirstyta, gedimams atspari DBVS, pagrįsta SQLite

Pristatomas paskirstytos DBMS rqlite 6.0 leidimas, kuris naudoja SQLite kaip saugojimo variklį ir leidžia organizuoti sinchronizuotų saugyklų klasterio darbą. Viena iš rqlite ypatybių yra paskirstytos gedimams atsparios saugyklos, šiek tiek panašios į etcd ir Consul, diegimo, diegimo ir priežiūros paprastumas, tačiau naudojant reliacinį duomenų modelį, o ne rakto / vertės formatą. Projekto kodas parašytas Go ir platinamas pagal MIT licenciją.

Kad visi mazgai būtų sinchronizuoti, naudojamas „Raft“ konsensuso algoritmas. Rqlite naudoja originalią SQLite biblioteką ir standartinę go-sqlite3 tvarkyklę, ant kurios paleidžiamas sluoksnis, kuris apdoroja klientų užklausas, atlieka replikaciją į kitus mazgus ir stebi, ar pasiekiamas sutarimas dėl pagrindinio mazgo pasirinkimo.

Duomenų bazės pakeitimus gali atlikti tik tas mazgas, kuris pasirinktas kaip lyderis, tačiau ryšius su rašymo operacijomis galima siųsti ir į kitus klasterio mazgus, kurie grąžins lyderio adresą, kad būtų galima pakartoti užklausą (kitoje versijoje jie pažadas pridėti automatinį užklausų persiuntimą vadovui). Pagrindinis dėmesys skiriamas gedimų tolerancijai, todėl DBVS keičiasi tik skaitymo operacijomis, o rašymo operacijos yra kliūtis. Galima paleisti rqlite klasterį iš vieno mazgo ir šis sprendimas gali būti naudojamas norint suteikti prieigą prie SQLite per HTTP, nenustatant gedimų tolerancijos.

Kiekvieno mazgo SQLite duomenys saugomi ne faile, o atmintyje. Sluoksnio lygiu, kai įdiegiamas „Raft“ protokolas, yra saugomas visų SQLite komandų, kurios lemia duomenų bazės pakeitimus, žurnalas. Šis žurnalas naudojamas replikuojant (replikacija užklausų atkūrimo lygiu kituose mazguose), pradedant naują mazgą arba atsikuriant praradus ryšį. Žurnalo dydžiui sumažinti naudojamas automatinis pakavimas, kuris prasideda po tam tikro skaičiaus pakeitimų ir dėl to diske užfiksuojama momentinė nuotrauka, dėl kurios pradedamas saugoti naujas žurnalas (duomenų bazės būsena atmintyje yra identiškas momentinei nuotraukai + sukauptam pakeitimų žurnalui).

Rqlite savybės:

  • Lengva įdiegti klasterį, nereikia atskiro SQLite diegimo.
  • Galimybė greitai gauti pakartotinę SQL saugyklą.
  • Paruošta naudoti darbo projektuose (gamybinio lygio).
  • HTTP(S) API, leidžianti atnaujinti duomenis paketiniu režimu ir nustatyti pagrindinį klasterio mazgą, buvimas. Tai taip pat suteikia komandų eilutės sąsają ir galimybę naudoti įvairias klientų bibliotekas, sukurtas SQLite.
  • Galimybė naudotis paslauga, skirta identifikuoti kitus mazgus, leidžiančius dinamiškai kurti grupes.
  • Duomenų mainų tarp mazgų šifravimo palaikymas.
  • Galimybė konfigūruoti duomenų tinkamumo ir nuoseklumo tikrinimo lygį skaitant.
  • Neprivaloma galimybė prijungti mazgus tik skaitymo režimu, kurie nedalyvauja nustatant konsensusą ir yra naudojami siekiant padidinti klasterio mastelį skaitymo operacijoms.
  • Jūsų pačių operacijų formos palaikymas, pagrįstas komandų sujungimu vienoje užklausoje (operacijos, pagrįstos BEGIN, COMMIT, ROLLBACK, SAVEPOINT ir RELEASE, nepalaikomos).
  • Palaikymas kuriant karštas atsargines kopijas.

Naujajame leidime pateikiami reikšmingi architektūriniai pakeitimai, kuriais siekiama padidinti klasterio patikimumą gerinant skaitymo ir rašymo užklausų nukreipimo į tinkamus klasterio mazgus procesą. rqlite mazgai dabar gali multipleksuoti kelis loginius ryšius tarpusavyje naudodami TCP ryšius, tarp mazgų užmegztus Raft protokolu. Jei užklausai reikia vadovo įgaliojimų, bet ji siunčiama į antrinį mazgą, antrinis mazgas gali nustatyti lyderio adresą ir perduoti jį klientui neatlikdamas „Raft“ konsensuso skaičiavimų.

Dėl pakeitimo taip pat nebereikėjo atskiro metaduomenų sinchronizavimo komponento ir atskiro plausto būsenos ir metaduomenų tvarkymo. Antriniai mazgai dabar siunčia užklausas pagrindiniam mazgui tik tada, kai reikia, kai reikia sužinoti lyderio mazgo adresą. API suteikia galimybę gauti informaciją apie kitų klasterio mazgų būseną. Komanda ".sysdump" buvo įtraukta į komandų eilutės sąsają.

Šaltinis: opennet.ru

Добавить комментарий