Liberigo de rqlite 6.0, distribuita mistolerema DBMS bazita sur SQLite

La eldono de la distribuita DBMS rqlite 6.0 estas prezentita, kiu uzas SQLite kiel stokan motoron kaj permesas organizi la laboron de aro de sinkronigitaj stokaĵoj. Unu el la trajtoj de rqlite estas la facileco de instalado, deplojo kaj prizorgado de distribuita mistolerema stokado, iom simila al etcd kaj Consul, sed uzante interrilatan datummodelon anstataŭ ŝlosila/valorformato. La projektkodo estas skribita en Go kaj distribuita sub la MIT-licenco.

Por konservi ĉiujn nodojn en sinkronigita stato, la Raft-interkonsenta algoritmo estas uzata. Rqlite uzas la originalan SQLite-bibliotekon kaj la norman ŝoforon go-sqlite3, sur kiu estas lanĉita tavolo, kiu prilaboras klientajn petojn, plenumas reproduktadon al aliaj nodoj kaj kontrolas la atingon de konsento pri la elekto de gvida nodo.

Ŝanĝoj al la datumbazo povas esti faritaj nur per la nodo, kiu estas elektita kiel la gvidanto, sed ligoj kun skribaj operacioj ankaŭ povas esti senditaj al aliaj nodoj en la areto, kiuj resendos la adreson de la gvidanto por ripeti la peton (en la sekva versio ili promeso aldoni aŭtomatan plusendon de petoj al la gvidanto). La ĉefa emfazo estas sur faŭltoleremo, tiel ke la DBMS skalas nur kun legaj operacioj, kaj skribaj operacioj estas la proplemkolo. Eblas ruli rqlite-grupon de ununura nodo kaj ĉi tiu solvo povas esti uzata por havigi aliron al SQLite per HTTP sen provizi misfunkciadon.

La SQLite-datumoj sur ĉiu nodo ne estas konservitaj en dosiero, sed en memoro. Ĉe la tavolnivelo kun la efektivigo de la Raft-protokolo, estas konservata protokolo de ĉiuj SQLite-komandoj, kiuj kondukas al ŝanĝoj en la datumbazo. Ĉi tiu protokolo estas uzata dum reproduktado (reproduktado je la nivelo de reproduktado de petoj sur aliaj nodoj), komencado de nova nodo, aŭ renormaliĝo post perdo de konektebleco. Por redukti la grandecon de la protokolo, oni uzas aŭtomatan pakadon, kiu komenciĝas post difinita nombro da ŝanĝoj kaj kondukas al fiksiĝo de momentfoto sur disko, rilate al kiu nova protokolo komencas esti konservita (la stato de la datumbazo en memoro). estas identa al la momentfoto + la amasigita ŝanĝprotokolo).

Karakterizaĵoj de rqlite:

  • Facile disfaldi areton, sen la bezono de aparta instalado de SQLite.
  • Kapablo rapide akiri reproduktitan SQL-stokadon.
  • Preta por uzi en laborprojektoj (Produktad-grado).
  • La ĉeesto de HTTP(S) API, kiu ebligas al vi ĝisdatigi datumojn en bata reĝimo kaj determini la gvidan nodon de la areto. Ĝi ankaŭ disponigas komandlinian interfacon kaj la kapablon uzi diversajn klientbibliotekojn konstruitajn por SQLite.
  • Havebleco de servo por identigi aliajn nodojn, permesante al vi krei aretojn dinamike.
  • Subteno por ĉifrado de datumoj interŝanĝo inter nodoj.
  • Kapablo agordi la nivelon de kontrolado de la graveco kaj konsistenco de datumoj dum legado.
  • Laŭvola kapablo ligi nodojn en nurlegebla reĝimo, kiuj ne partoprenas en determinado de konsento kaj estas uzataj por pliigi la skaleblon de la areto por legaj operacioj.
  • Subteno por via propra formo de transakcioj bazita sur kombinado de komandoj en unu peto (transakcioj bazitaj sur BEGIN, COMMIT, ROLLBACK, SAVEPOINT kaj RELEASE ne estas subtenataj).
  • Subteno por krei varmajn sekurkopiojn.

La nova eldono enkondukas signifajn arkitekturajn ŝanĝojn celantajn pliigi la fidindecon de areto plibonigante la procezon de envojigo de legado- kaj skribpetoj al la ĝustaj aretnodoj. rqlite-nodoj nun povas multipleksi multoblajn logikajn ligojn inter ili mem uzante TCP-ligojn establitajn inter nodoj per la Raft-protokolo. Se peto postulas gvidantaŭtoritaton sed estas sendita al sekundara nodo, la sekundara nodo povas determini la adreson de la gvidanto kaj pludoni ĝin al la kliento sen farado de Raft-interkonsentkalkuloj.

La ŝanĝo ankaŭ eliminis la bezonon de aparta metadatena sinkronigkomponento kaj eliminis apartan manipuladon de Raft-ŝtato kaj metadatenoj. Malĉefaj nodoj nun sendas petojn al la ĉefnodo nur kiam necese, kiam ili bezonas ekscii la adreson de la ĉefnodo. La API disponigas la kapablon akiri informojn pri la stato de aliaj nodoj en la areto. La komando ".sysdump" estis aldonita al la komandlinia interfaco.

fonto: opennet.ru

Aldoni komenton