Izdanje rqlite 7.0, distribuiranog DBMS-a otpornog na greške baziran na SQLite-u

Došlo je do izdavanja distribuiranog DBMS-a rqlite 7.0, koji koristi SQLite kao mehanizam za skladištenje i omogućava vam da organizujete rad klastera iz skladišta sinhronizovanih jedni s drugima. Jedna od karakteristika rqlite-a je jednostavnost instalacije, implementacije i održavanja distribuiranog skladišta otpornog na greške, donekle sličnog etcd i Consulu, ali koristeći relacijski model podataka umjesto formata ključ/vrijednost. Kod projekta je napisan u Go i distribuiran pod MIT licencom.

Za održavanje svih čvorova u sinkroniziranom stanju, koristi se Raft konsenzus algoritam. Rqlite koristi originalnu SQLite biblioteku i go-sqlite3 drajver, na vrhu kojih se pokreće sloj koji obrađuje zahtjeve klijenata, vrši replikaciju na druge čvorove i prati postizanje konsenzusa o izboru vodećeg čvora.

Promjene u bazi podataka može izvršiti samo čvor koji je odabran kao vodeći, ali se veze sa operacijama pisanja mogu poslati i drugim čvorovima u klasteru, koji će vratiti adresu voditelja za ponavljanje zahtjeva (u sljedećoj verziji oni obećanje dodavanja automatskog prosljeđivanja zahtjeva lideru). Glavni naglasak je na toleranciji grešaka, tako da se DBMS skalira samo sa operacijama čitanja, a operacije pisanja su usko grlo. Moguće je pokrenuti rqlite klaster iz jednog čvora i ovo rješenje se može koristiti za pružanje pristupa SQLite-u preko HTTP-a bez pružanja tolerancije grešaka.

SQLite podaci na svakom čvoru nisu pohranjeni u datoteci, već u memoriji. Na nivou sloja sa implementacijom Raft protokola vodi se dnevnik svih SQLite naredbi koje dovode do promjena u bazi podataka. Ovaj dnevnik se koristi tokom replikacije (replikacija na nivou zahtjeva za reprodukciju na drugim čvorovima), prilikom pokretanja novog čvora ili za oporavak od gubitka veze. Da bi se smanjila veličina dnevnika, koristi se automatsko pakovanje koje počinje nakon određenog broja izmjena i dovodi do fiksiranja snimka, u odnosu na koji počinje da se održava novi dnevnik (stanje baze podataka u memoriji je identično snimku + akumulirani dnevnik promjena).

Karakteristike rqlite-a:

  • Jednostavan za postavljanje klastera, bez potrebe za zasebnom instalacijom SQLite-a.
  • Mogućnost brzog dobijanja repliciranog SQL prostora za skladištenje.
  • Spremno za upotrebu u proizvodnim projektima (proizvodni nivo).
  • Prisustvo HTTP(S) API-ja koji vam omogućava da ažurirate podatke u batch modu i odredite vodeći čvor klastera. Takođe su obezbeđeni interfejs komandne linije i klijentske biblioteke za različite programske jezike.
  • Dostupnost usluge za identifikaciju drugih čvorova, koja vam omogućava dinamičko kreiranje klastera.
  • Podrška za šifriranje razmjene podataka između čvorova.
  • Mogućnost konfigurisanja nivoa provjere relevantnosti i konzistentnosti podataka prilikom čitanja.
  • Opciona mogućnost povezivanja čvorova u režimu samo za čitanje, koji ne učestvuju u određivanju konsenzusa i koriste se za povećanje skalabilnosti klastera za operacije čitanja.
  • Podrška za vaš vlastiti oblik transakcija baziran na kombinovanju naredbi u jednom zahtjevu (transakcije zasnovane na BEGIN, COMMIT, ROLLBACK, SAVEPOINT i RELEASE nisu podržane).
  • Podrška za kreiranje vrućih sigurnosnih kopija.

U novom izdanju:

  • Dodata podrška za automatsko rqlite klasterisanje koristeći novu uslugu detekcije čvorova koja može raditi na bazi Consul i etcd distribuirane memorije. Usluga omogućava rqlite čvorovima da automatski pronađu jedni druge - administrator samo treba da pokrene nekoliko čvorova na različitim serverima, navodeći zajedničku adresu klastera Consul ili etcd (na primjer, “example.com:8500”), a čvorovi će automatski biti kombinovani u klaster. Vodeći čvor periodično ažurira informacije o svojoj adresi u Consul ili etcd memoriji, što vam omogućava naknadnu promjenu lidera bez potrebe za rekonfiguracijom drugih čvorova, kao i dodavanje novih čvorova čak i nakon promjene lidera. Naslijeđena usluga načina otkrivanja koja radi na AWS Lambda je ukinuta.
  • CLI sučelje dozvoljava specificiranje nekoliko hostova odjednom - ako je prvi čvor nedostupan, bit će kontaktirani sljedeći hostovi.
  • Kod za raščlanjivanje argumenata komandne linije rqlit je prerađen.
  • Zastarjeli protobuf paket je ukinut.
  • BoltDB skladište korišteno u implementaciji Raft protokola zamijenjeno je bbolt, viljuškom iz etcd projekta.

izvor: opennet.ru

Dodajte komentar