Porazdeljeni DBMS za podjetja

Izrek CAP je temelj teorije porazdeljenih sistemov. Seveda polemika okoli njega ne pojenja: definicije v njem niso kanonične in ni strogih dokazov ... Kljub temu, trdno stojimo na stališčih vsakdanjega zdravega razuma™, intuitivno razumemo, da je izrek resničen.

Porazdeljeni DBMS za podjetja

Edina stvar, ki ni očitna, je pomen črke "P". Ko je gruča razdeljena, se odloči, ali se ne bo odzvala, dokler ni dosežena sklepčnost, ali bo vrnila podatke, ki so na voljo. Glede na rezultate te izbire je sistem razvrščen kot CP ali AP. Cassandra, na primer, se lahko obnaša tako ali drugače, odvisno niti od nastavitev gruče, temveč od parametrov vsake posebne zahteve. Če pa sistem ni "P" in se razcepi, kaj potem?

Odgovor na to vprašanje je nekoliko nepričakovan: grozd CA se ne more razdeliti.
Kakšna gruča je to, ki se ne more razdeliti?

Nepogrešljiv atribut takega grozda je skupni sistem za shranjevanje podatkov. V veliki večini primerov to pomeni povezavo preko omrežja SAN, kar omejuje uporabo rešitev CA na velika podjetja, ki so sposobna vzdrževati infrastrukturo SAN. Da lahko več strežnikov deluje z istimi podatki, je potreben datotečni sistem v gručah. Takšni datotečni sistemi so na voljo v portfeljih HPE (CFS), Veritas (VxCFS) in IBM (GPFS).

Oracle RAC

Možnost Real Application Cluster se je prvič pojavila leta 2001 z izdajo Oracle 9i. V takšni gruči več primerkov strežnika deluje z isto bazo podatkov.
Oracle lahko deluje tako z datotečnim sistemom v gručah kot z lastno rešitvijo - ASM, Automatic Storage Management.

Vsak izvod vodi svoj dnevnik. Transakcijo izvede in potrdi ena instanca. Če primerek odpove, eno od preživelih vozlišč gruče (primerkov) prebere njegov dnevnik in obnovi izgubljene podatke – s čimer se zagotovi razpoložljivost.

Vse instance vzdržujejo svoj predpomnilnik in iste strani (bloki) so lahko v predpomnilnikih več instanc hkrati. Poleg tega, če ena instanca potrebuje stran in je v predpomnilniku druge instance, jo lahko pridobi od soseda z uporabo mehanizma fuzije predpomnilnika namesto branja z diska.

Porazdeljeni DBMS za podjetja

Toda kaj se zgodi, če mora eden od primerkov spremeniti podatke?

Posebnost Oracla je, da nima namenske storitve zaklepanja: če strežnik želi zakleniti vrstico, se zapis zaklepanja postavi neposredno na pomnilniško stran, kjer se nahaja zaklenjena vrstica. Zahvaljujoč temu pristopu je Oracle prvak v zmogljivosti med monolitnimi bazami podatkov: storitev zaklepanja nikoli ne postane ozko grlo. Toda v konfiguraciji gruče lahko takšna arhitektura povzroči intenziven omrežni promet in zastoje.

Ko je zapis zaklenjen, primerek obvesti vse druge primerke, da ima stran, ki hrani ta zapis, izključno zadržanje. Če mora drug primerek spremeniti zapis na isti strani, mora počakati, da se spremembe na strani potrdijo, kar pomeni, da se informacije o spremembi zapišejo v dnevnik na disku (in transakcija se lahko nadaljuje). Lahko se zgodi tudi, da bo stran zaporedoma spremenjena z več kopijami, nato pa boste pri zapisovanju strani na disk morali ugotoviti, kdo hrani trenutno različico te strani.

Naključno posodabljanje istih strani v različnih vozliščih RAC povzroči dramatično zmanjšanje zmogljivosti baze podatkov, do točke, ko je lahko zmogljivost gruče nižja od zmogljivosti posameznega primerka.

Pravilna uporaba Oracle RAC je fizična particija podatkov (na primer z uporabo mehanizma particionirane tabele) in dostop do vsakega niza particij prek namenskega vozlišča. Glavni namen RAC ni bil horizontalno skaliranje, temveč zagotavljanje tolerance napak.

Če se vozlišče preneha odzivati ​​na srčni utrip, potem vozlišče, ki ga je zaznalo, najprej začne postopek glasovanja na disku. Če manjkajoče vozlišče tukaj ni navedeno, eno od vozlišč prevzame odgovornost za obnovitev podatkov:

  • "zamrzne" vse strani, ki so bile v predpomnilniku manjkajočega vozlišča;
  • prebere dnevnike (redo) manjkajočega vozlišča in znova uporabi spremembe, zabeležene v teh dnevnikih, hkrati pa preveri, ali imajo druga vozlišča novejše različice strani, ki se spreminjajo;
  • razveljavi čakajoče transakcije.

Za poenostavitev preklapljanja med vozlišči ima Oracle koncept storitve – virtualne instance. En primerek lahko služi več storitvam, storitev pa se lahko premika med vozlišči. Primerek aplikacije, ki služi določenemu delu baze podatkov (na primer skupini odjemalcev), deluje z eno storitvijo, storitev, odgovorna za ta del baze podatkov, pa se premakne v drugo vozlišče, ko vozlišče odpove.

IBM Pure Data Systems for Transactions

Grozdna rešitev za DBMS se je v portfelju Blue Giant pojavila leta 2009. Ideološko je naslednik grozda Parallel Sysplex, zgrajenega na "običajni" opremi. Leta 2009 je bil DB2 pureScale izdan kot programska zbirka, leta 2012 pa je IBM ponudil napravo, imenovano Pure Data Systems for Transactions. Ne smemo ga zamenjevati s Pure Data Systems for Analytics, ki ni nič drugega kot preimenovana Netezza.

Na prvi pogled je arhitektura pureScale podobna Oracle RAC: na enak način je več vozlišč povezanih v skupni sistem za shranjevanje podatkov, vsako vozlišče pa poganja svojo instanco DBMS s svojimi pomnilniškimi področji in dnevniki transakcij. Toda za razliko od Oracla ima DB2 namensko storitev zaklepanja, ki jo predstavlja niz procesov db2LLM*. V konfiguraciji gruče je ta storitev postavljena na ločeno vozlišče, ki se imenuje povezovalni pripomoček (CF) v Parallel Sysplex in PowerHA v Pure Data.

PowerHA nudi naslednje storitve:

  • upravitelj ključavnic;
  • globalni vmesni pomnilnik;
  • področje medprocesnih komunikacij.

Za prenos podatkov iz PowerHA v vozlišča baze podatkov in nazaj se uporablja oddaljeni dostop do pomnilnika, zato mora povezava gruče podpirati protokol RDMA. PureScale lahko uporablja Infiniband in RDMA prek Etherneta.

Porazdeljeni DBMS za podjetja

Če vozlišče potrebuje stran in te strani ni v predpomnilniku, potem vozlišče zahteva stran v globalnem predpomnilniku in le, če je ni tam, jo ​​prebere z diska. Za razliko od Oracla gre zahteva samo PowerHA in ne sosednjim vozliščem.

Če bo primerek spremenil vrstico, jo zaklene v ekskluzivnem načinu, stran, na kateri se nahaja vrstica, pa v skupni rabi. Vse ključavnice so registrirane v globalnem upravitelju ključavnic. Ko je transakcija končana, vozlišče pošlje sporočilo upravitelju zaklepanja, ki kopira spremenjeno stran v globalni predpomnilnik, sprosti zaklepanja in razveljavi spremenjeno stran v predpomnilnikih drugih vozlišč.

Če je stran, v kateri se nahaja spremenjena vrstica, že zaklenjena, bo upravitelj zaklepanja prebral spremenjeno stran iz pomnilnika vozlišča, ki je naredilo spremembo, sprostil zaklepanje, razveljavil spremenjeno stran v predpomnilnikih drugih vozlišč in dajte zaklepanje strani vozlišču, ki je to zahtevalo.

»Umazane«, torej spremenjene, strani je mogoče zapisati na disk tako iz običajnega vozlišča kot iz PowerHA (castout).

Če eno od vozlišč pureScale odpove, je obnovitev omejena samo na tiste transakcije, ki v času odpovedi še niso bile dokončane: strani, ki jih je to vozlišče spremenilo v dokončanih transakcijah, so v globalnem predpomnilniku na PowerHA. Vozlišče se znova zažene v zmanjšani konfiguraciji na enem od strežnikov v gruči, povrne čakajoče transakcije in sprosti zapore.

PowerHA deluje na dveh strežnikih in glavno vozlišče sinhrono posnema svoje stanje. Če primarno vozlišče PowerHA odpove, gruča še naprej deluje z rezervnim vozliščem.
Seveda, če do nabora podatkov dostopate prek enega samega vozlišča, bo splošna zmogljivost gruče višja. PureScale lahko celo opazi, da določeno področje podatkov obdeluje eno vozlišče, nato pa bo vozlišče lokalno obdelalo vsa zaklepanja, povezana s tem področjem, brez komunikacije s PowerHA. Toda takoj, ko aplikacija poskuša dostopati do teh podatkov prek drugega vozlišča, se bo centralizirana obdelava zaklepanja nadaljevala.

IBM-ovi interni testi pri delovni obremenitvi 90 % branja in 10 % pisanja, kar je zelo podobno delovnim obremenitvam v realnem svetu, kažejo skoraj linearno skaliranje do 128 vozlišč. Pogoji testiranja žal niso razkriti.

HPE NonStop SQL

Portfelj Hewlett-Packard Enterprise ima tudi lastno zelo razpoložljivo platformo. To je platforma NonStop, ki jo je leta 1976 na trg izdalo podjetje Tandem Computers. Leta 1997 je podjetje prevzel Compaq, ta pa se je leta 2002 združil s Hewlett-Packardom.

NonStop se uporablja za izdelavo kritičnih aplikacij - na primer za obdelavo HLR ali bančnih kartic. Platforma je dostavljena v obliki programsko-strojnega kompleksa (naprave), ki vključuje računalniška vozlišča, sistem za shranjevanje podatkov in komunikacijsko opremo. Omrežje ServerNet (v sodobnih sistemih - Infiniband) služi tako za izmenjavo med vozlišči kot za dostop do sistema za shranjevanje podatkov.

Zgodnje različice sistema so uporabljale lastniške procesorje, ki so bili sinhronizirani med seboj: vse operacije je sinhrono izvajalo več procesorjev in takoj, ko je eden od procesorjev naredil napako, se je izklopil, drugi pa je nadaljeval z delom. Kasneje je sistem prešel na običajne procesorje (najprej MIPS, nato Itanium in nazadnje x86), za sinhronizacijo pa so začeli uporabljati druge mehanizme:

  • sporočila: vsak sistemski proces ima »senčnega« dvojčka, kateremu aktivni proces občasno pošilja sporočila o svojem statusu; če glavni proces ne uspe, senčni proces začne delovati od trenutka, ki ga določa zadnje sporočilo;
  • glasovanje: sistem za shranjevanje ima posebno strojno komponento, ki sprejme več enakih dostopov in jih izvede le, če se dostopi ujemajo; Namesto fizične sinhronizacije procesorji delujejo asinhrono, rezultati njihovega dela pa se primerjajo le v I/O trenutkih.

Od leta 1987 deluje relacijski DBMS na platformi NonStop - najprej SQL/MP, kasneje pa SQL/MX.

Celotna zbirka podatkov je razdeljena na dele, vsak del pa je odgovoren za svoj proces Data Access Manager (DAM). Zagotavlja mehanizme za snemanje podatkov, predpomnjenje in zaklepanje. Obdelavo podatkov izvajajo procesi strežnika Executor Server, ki se izvajajo na istih vozliščih kot ustrezni upravljavci podatkov. Razporejevalnik SQL/MX razdeli naloge med izvajalce in združi rezultate. Kadar je treba opraviti dogovorjene spremembe, se uporabi dvofazni protokol potrditve, ki ga nudi knjižnica TMF (Transaction Management Facility).

Porazdeljeni DBMS za podjetja

NonStop SQL lahko procesom dodeli prednost, tako da dolge analitične poizvedbe ne ovirajo izvajanja transakcij. Vendar je njegov namen ravno obdelava kratkih transakcij in ne analitika. Razvijalec zagotavlja razpoložljivost gruče NonStop na ravni petih "devetk", kar pomeni, da je izpad le 5 minut na leto.

SAP-HANA

Prva stabilna izdaja HANA DBMS (1.0) je bila izdana novembra 2010, paket SAP ERP pa je prešel na HANA maja 2013. Platforma temelji na kupljenih tehnologijah: TREX Search Engine (iskanje v stolpčnem pomnilniku), P*TIME DBMS in MAX DB.

Sama beseda "HANA" je akronim, High performance ANalytical Appliance. Ta DBMS je dobavljen v obliki kode, ki se lahko izvaja na katerem koli strežniku x86, vendar so industrijske namestitve dovoljene samo na certificirani opremi. Na voljo so rešitve HP, Lenovo, Cisco, Dell, Fujitsu, Hitachi, NEC. Nekatere konfiguracije Lenovo omogočajo celo delovanje brez SAN - vlogo skupnega pomnilniškega sistema igra gruča GPFS na lokalnih diskih.

Za razliko od zgoraj navedenih platform je HANA DBMS v pomnilniku, tj. primarna podatkovna slika je shranjena v RAM-u, na disk pa se zapišejo samo dnevniki in občasni posnetki za obnovitev v primeru katastrofe.

Porazdeljeni DBMS za podjetja

Vsako vozlišče gruče HANA je odgovorno za svoj del podatkov, podatkovni zemljevid pa je shranjen v posebni komponenti – ​​Name Server, ki se nahaja na koordinatorskem vozlišču. Podatki se ne podvajajo med vozlišči. Informacije o zaklepanju so shranjene tudi na vsakem vozlišču, vendar ima sistem globalni detektor zastoja.

Ko se odjemalec HANA poveže z gručo, prenese njeno topologijo in lahko nato neposredno dostopa do katerega koli vozlišča, odvisno od tega, katere podatke potrebuje. Če transakcija vpliva na podatke posameznega vozlišča, jo lahko to vozlišče izvede lokalno, če pa se spremenijo podatki več vozlišč, začetno vozlišče stopi v stik s koordinatorskim vozliščem, ki odpre in koordinira porazdeljeno transakcijo ter jo potrdi z uporabo optimiziran dvofazni protokol potrditve.

Koordinatorsko vozlišče je podvojeno, tako da, če koordinator odpove, rezervno vozlišče takoj prevzame. Toda če vozlišče s podatki odpove, je edini način za dostop do njegovih podatkov ta, da znova zaženete vozlišče. Grozdi HANA praviloma vzdržujejo rezervni strežnik, da čim hitreje znova zaženejo izgubljeno vozlišče na njem.

Vir: www.habr.com

Dodaj komentar