Izdanje rqlite 6.0, distribuirane otporne baze podataka temeljen na SQLite-u

Predstavljen je izlazak distribuirane baze podataka rqlite 6.0, koja koristi SQLite kao mehanizam za pohranu i omogućava organizaciju klastera sinhroniziranih skladišta. Među karakteristikama rqlite ističe se jednostavnost instalacije, implementacije i održavanja distribuiranog otpornog skladišta, slično etcd-u i Consulu, ali koristi relacijski model rada s podacima umjesto formata ključ/vrijednost. Izvorni kod projekta je napisan u programskom jeziku Go i distribuira se pod MIT licencom.

Za održavanje svih čvorova u sinhroniziranom stanju koristi se algoritam za postizanje konsenzusa Raft. Rqlite koristi originalnu SQLite biblioteku i standardni drajver go-sqlite3, na kojima se pokreće sloj koji obrađuje zahtjeve klijenata, izvršava replikaciju na druge čvorove i prati postizanje konsenzusa u izboru vodećeg čvora.

Izmjene u bazi podataka mogu se izvršavati samo od strane čvora koji je izabran kao vodeći, ali veze s operacijama pisanja mogu biti proslijeđene i drugim čvorovima klastera, koji će vratiti adresu voditelja za ponavljanje zahtjeva (u sljedećoj verziji obećavaju dodati automatsko prosljeđivanje zahtjeva voditelju). Glavni fokus je na otpornosti, stoga se baza podataka može skalirati samo po operacijama čitanja, dok su operacije pisanja usko grlo. Moguće je pokrenuti klaster rqlite iz jednog čvora, a to rešenje može se koristiti za organizaciju pristupa SQLite-u putem HTTP-a bez pružanja otpornosti.

Podaci SQLite na svakom čvoru se ne čuvaju u datoteci, već u memoriji. Na razini sloja s implementacijom Raft protokola vodi se dnevnik svih SQLite naredbi koje uzrokuju promjene u bazi podataka. Ovaj dnevnik se koristi prilikom replikacije (replikacija na razini reprodukcije zahtjeva na drugim čvorovima), pokretanja novog čvora ili oporavljanja nakon gubitka povezivosti. Za smanjenje veličine dnevnika koristi se automatsko pakiranje, koje se pokreće nakon zadanog broja izmjena i dovodi do fiksacije snimka na disku, u odnosu na koji počinje vođenje novog dnevnika (stanje baze podataka u memoriji identično je snimku + nakupljenom dnevniku promjena).

Karakteristike rqlite:

  • Jednostavno postavljanje klastera bez potrebe za zasebnom instalacijom SQLite-a.
  • Mogućnost brzog dobivanja replikacijskog SQL skladišta.
  • Spreman za korištenje u radnim projektima (produkcijska kvaliteta).
  • Postojanje HTTP(S) API-ja koji omogućava ažuriranje podataka u serijama i određivanje vodećeg čvora klastera. Također je dostupan sučelje naredbenog retka i mogućnost korištenja raznih biblioteka klijenata, stvorenih za SQLite.
  • Postojanje usluge za identifikaciju drugih čvorova koja omogućava dinamičko stvaranje klastera.
  • Podrška za enkripciju razmjene podataka između čvorova.
  • Mogućnost podešavanja razine provjere valjanosti i konzistentnosti podataka prilikom čitanja.
  • Opcionalna mogućnost povezivanja čvorova u načinu samo za čitanje, koji ne sudjeluju u određivanju konsenzusa i koriste se za povećanje skalabilnosti klastera u operacijama čitanja.
  • Podrška za vlastiti oblik transakcija na temelju okupljanja naredbi u jednom upitu (transakcije temeljem BEGIN, COMMIT, ROLLBACK, SAVEPOINT i RELEASE nisu podržane).
  • Podrška za izradu vrućih sigurnosnih kopija.

U novom izdanju uvedene su značajne arhitektonske promjene usmjerene na poboljšanje pouzdanosti klastera kroz poboljšani proces usmjeravanja zahtjeva za čitanje i pisanje prema ispravnim čvorovima klastera. Rqlite čvorovi sada mogu višekratno multiplexirati između sebe nekoliko logičkih veza koristeći TCP veze uspostavljene između čvorova protokolom Raft. Ako zahtjev zahtijeva ovlasti vodećeg čvora, ali je poslan sekundarnom čvoru, sekundarni čvor može odrediti adresu vođe i proslijediti je klijentu bez izvođenja izračuna konsenzusa prema protokolu Raft.

Ova promjena također je omogućila uklanjanje zasebne komponente za sinkronizaciju metapodataka i isključila zasebnu obradu stanja Rafta i metapodataka. Sekundarni čvorovi sada usmjeravaju zahtjeve prema vodećem čvoru samo kada je to potrebno, kako bi saznali adresu vodećeg čvora. U API-ju je omogućena mogućnost dobivanja informacija o stanju drugih čvorova u klasteru. U sučelje naredbenog retka dodana je naredba '.sysdump'.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster