CAP-teoreem on jaotusteooriate nurgakivi. Loomulikult ei vaibu vaidlused selle ĂŒmber: ka mÀÀratlemised ei ole kanonilised, ja ranget tĂ”estust pole... Siiski, seistes kindlalt igapĂ€eva mĂ”istuse positsioonidesâą, mĂ”istame me intuitsiooniliselt, et teoreem on tĂ”ene.

Ainus asi, mis ei ole ilmne, on tĂ€ht 'P'. Kui klaster jaguneb, siis ta otsustab â kas mitte vastata, kuni kvoorum on kogutud, vĂ”i anda need andmed, mis on olemas. Selle valiku tulemuste alusel klassifitseeritakse sĂŒsteem kas CP-ks vĂ”i AP-ks. Cassandra vĂ”ib nĂ€iteks kĂ€ituda nii ja naa, sĂ”ltumata isegi klasteri seadistustest, vaid iga konkreetse pĂ€ringu parameetritest. Aga kui sĂŒsteem ei ole 'P' ja see on jagunenud, siis â mis siis?
Sellele kĂŒsimusele on vastus veidi ootamatu: CA-klaster ei saa jaguneda.
Mis klaster see siis on, mis ei saa jaguneda?
Sellise klastri kohustuslik atribuut on ĂŒhine andmete salvestussĂŒsteem. Enamikul juhtudel tĂ€hendab see liitumist SAN-iga, mis piirab CA-lahenduste rakendamist suurte ettevĂ”tete hulka, kes suudavad seadistada SAN-infrastruktuuri. Selleks, et mitu serverid saaksid töötada samaaegselt ĂŒhtede ja samade andmetega, on vajalik klasteri failisĂŒsteem. Sellised failisĂŒsteemid on saadaval HPE (CFS), Veritas (VxCFS) ja IBM (GPFS) portfellis.
Oracle RAC
Real Application Clustere valik sai esmakordselt tutvustatud 2001. aastal Oracle 9i vĂ€ljaandes. Sellises klastris töötavad mitu eksemplari serverilt ĂŒhe ja sama andmebaasi kallal.
Oracle vĂ”ib töötada nii klasteri failisĂŒsteemi kui ka oma lahendusega â ASM, Automatic Storage Management.
Iga eksemplar peab oma logi. Tehing toimub ja fikseeritakse ĂŒhe eksemplari poolt. Juhul kui eksemplar ebaĂ”nnestub, loeb ĂŒks ellujÀÀnud klastrite sĂ”lmedest (eksemplaridest) selle logi ja taastab kadunud andmed â seelĂ€bi tagatakse kĂ€ttesaadavus.
KĂ”ik eksemplarid toetavad oma vahemĂ€lu ning ĂŒhed ja samad lehed (plokid) vĂ”ivad olla samal ajal mitme eksemplari vahemĂ€lus. Veelgi enam, kui mĂ”ni leht on vajalik ĂŒhe eksemplari jaoks ja see on teise eksemplari vahemĂ€lus, vĂ”ib ta selle saada 'naabrilt' cache fusion mehhanismi abil, selle asemel et lugeda diskilt.

Aga mis juhtub, kui mÔni eksemplar vajab andmete muutmist?
Oracle'i eripÀra on see, et tal pole eraldi lukustusteenust: kui server soovib rida lukustada, siis lukustuse kirje pannakse otse mÀlulehele, kus lukustatav rida asub. TÀnu sellisele lÀhenemisele on Oracle monoliitsete andmebaaside seas tootlikkuse meister: lukustusteenus ei muutu kunagi kitsaskohaks. Kuid klastrikonfiguratsioonis vÔib selline arhitektuur pÔhjustada intensiivset vÔrgu liiklust ja vastastikuseid lukustusi.
Niipea, kui kirje on lukustatud, teavitab eksemplar kĂ”iki teisi eksemplare, et leht, kus see kirje asub, on monopolireĆŸiimis kinni. Kui teisele eksemplarile on vajalik muutmine samal lehel, peab ta ootama, kuni lehe muudatused on fikseeritud, st teave muudatuste kohta ei ole salvestatud kettajournaali (sel ajal vĂ”ib tehing jĂ€tkuda). Juhtuda vĂ”ib ka see, et lehte muudavad jĂ€rjestikku mitmed eksemplarid ning siis tuleb lehe salvestamisel kettale vĂ€lja selgitada, kellel on selle lehe ajakohane versioon.
Juhuslikud uuendused sama lehe kaudu erinevate RAC sĂ”lmede kaudu toovad kaasa andmebaasi tootlikkuse jĂ€rsu languse â nii palju, et klastrite tootlikkus vĂ”ib olla madalam kui ĂŒhe eksemplari tootlikkus.
Oracle RAC'i Ă”ige kasutamine on andmete fĂŒĂŒsiline jagamine (nĂ€iteks sektsioneeritud tabelite mehhanismi abil) ja igale sektsioonide kogumile pöördumine lĂ€bi eraldatud sĂ”lme. RAC'i peamine eesmĂ€rk ei ole horisontaalne skaleerimine, vaid rikke taluvuse tagamine.
Kui sĂ”lm hakkab sĂŒdamepekslemiseks vastama, kĂ€ivitab kĂ”igepealt see sĂ”lm, mis esimesena seda tuvastas, hÀÀletusprotseduuri kettale. Kui ka siin ei registreerita kadunud sĂ”lme, siis ĂŒks sĂ”lmedest vĂ”tab enda kanda andmete taastamise kohustused:
- âkĂŒlmutabâ kĂ”ik lehed, mis olid kadunud sĂ”lme vahemikus;
- loeb kadunud sÔlme taastamislogisid (redo) ja rakendab uuesti neid muudatusi, mis on nende logide sisse kirjutatud, samal ajal kontrollides, kas teistel sÔlmedel on muutuvate lehtede uuemad versioonid;
- tagastab lÔpetamata tehingud.
Oracles on teenuse mĂ”isted, et hĂ”lbustada sĂ”lmede vahetamist â virtuaalset eksemplari. Eksemplar vĂ”ib teenindada mitmeid teenuseid ja teenus vĂ”ib liikuda sĂ”lmede vahel. Rakenduse eksemplar, mis teenindab teatud osa andmebaasist (nĂ€iteks klientide grupi), töötab ĂŒhe teenusega, samas kui teenus, mis vastutab selle osa andmebaasist, liigub sĂ”lme rikke korral teise sĂ”lme.
IBM Pure Data Systems for Transactions
Klasterlahendus andmebaaside haldamiseks ilmus Sinise Gigandi portfelli 2009. aastal. Ideoloogiliselt on see Parallel Sysplexi klastrile jĂ€rglaseks, mis on ĂŒles ehitatud "tavalisele" riistvarale. 2009. aastal tuli turule toode DB2 pureScale, mis on tarkvaraplatvormide komplekt, ja 2012. aastal pakkus IBM tarkvaraalust ja riistvaralist komplekti nimega Pure Data Systems for Transactions. Seda ei tohiks segi ajada Pure Data Systems for Analytics'iga, mis on lihtsalt ĂŒmbernimetatud Netezza.
PureScale'i arhitektuur nĂ€eb esmapilgul vĂ€lja nagu Oracle RAC: mitmed sĂ”lmed on ĂŒhendatud ĂŒhise andmesalvestussĂŒsteemiga, ja igal sĂ”lmel töötab oma andmebaasi eksemplar koos oma mĂ€lualade ja tehinguajalooga. Kuid erinevalt Oracle'ist on DB2-s eraldiseisev lukuhalduse teenus, mida esindavad protsesside komplekt db2LLM*. Klasterkonfiguratsioonis viidatakse sellele teenusele eraldi sĂ”lmele, mida Parallel Sysplex'is nimetatakse coupling facility (CF) ja Pure Data-s PowerHA-ks.
PowerHA pakub jÀrgmisi teenuseid:
- lukuhaldur;
- ĂŒldine vahemĂ€lu;
- protsessidevaheline sideala.
Andmete edastamiseks PowerHA ja andmebaasi sÔlmede vahel kasutatakse kaugjuurdepÀÀsu mÀlule, seetÔttu peab klasteri vahel olema toetatud RDMA protokoll. PureScale vÔib kasutada nii Infiniband'i kui ka RDMA over Ethernet'i.

Kui sĂ”lm vajab lehte ja see leht ei ole vahemĂ€lus, siis sĂ”lm kĂŒsib lehte globaalsetest vahemĂ€ludest ja ainult juhul, kui ka seal ei ole, loeb selle plaadilt. Erinevalt Oracle'ist, toimub pĂ€ring ainult PowerHA-s, mitte naaber sĂ”lmedes.
Kui eksemplar on vahetamas rida, blokeerib see selle eraldisreĆŸiimis ja lehe, kus rida asub, jagatud reĆŸiimis. KĂ”ik blokeeringud registreeritakse globaalsetes blokeerimishaldurites. Kui tehing on lĂ”petatud, saadab sĂ”lme teate blokeerimishaldurile, kes kopeerib muudetud lehe globaalsetesse vahemĂ€lu, vabastab blokeeringud ja tĂŒhistab muudetud lehe teiste sĂ”lmede vahemĂ€lu.
Kui leht, kus muudetud rida asub, on juba blokeeritud, loeb blokeerimishaldur muudetud lehe mĂ€lust, mis muudatused teinud sĂ”lmem, vabastab blokeeringu, tĂŒhistab muudetud lehe teiste sĂ”lmede vahemĂ€lu ja annab blokeeringu lehe tagasi sĂ”lmele, kes selle soovis.
Muutunud, st ârĂ€pasedâ lehed vĂ”ivad kettale kirjutada nii tavalisest sĂ”lmedest kui ka PowerHA-st (castout).
Kui ĂŒks pureScale'i sĂ”lm tĂ”rkub, piirneb taastumine ainult nende tehingutega, mis katkestuse ajal olid veel lĂ”petamata: lehed, mida see sĂ”lm on lĂ”petatud tehingutes muutnud, on globaalses vahemĂ€lu PowerHA-s. SĂ”lm kĂ€ivitatakse kĂ€rbitud konfiguratsioonis ĂŒhel klastriserveritest, tagasi keerab lĂ”petamata tehingud ja vabastab blokeeringud.
PowerHA töötab kahel serveril, ja peamine sĂ”lm replitseerib oma seisundi sĂŒnkroonselt. Peamise sĂ”lme tĂ”rke korral jĂ€tkab PowerHA klaster tööd varusĂ”lmega.
Muidugi, kui andmekogule juurde pÀÀseda lĂ€bi ĂŒhe sĂ”lme, on klastri ĂŒldine jĂ”udlus suurem. PureScale vĂ”ib isegi mĂ€rgata, et teatud andmeala töödeldakse ĂŒhe sĂ”lmega, ning siis kĂ€sitletakse kogu selle ala blokeeringud kohapeal ilma kommunikatsioonita PowerHA-ga. Ent niipea, kui rakendus pĂŒĂŒab nendele andmetele juurde pÀÀseda lĂ€bi teise sĂ”lme, taastub tsentraliseeritud blokeeringute kĂ€sitlemine.
IBM-i sisetestid koormusega, mis sisaldab 90% lugemist ja 10% kirjutamist, mis on vÀga sarnane tegelikule tööstuslikule koormusele, nÀitavad peaaegu lineaarset skaleerimist kuni 128 sÔlme. Kahjuks ei avalikustata katsetingimusi.
HPE NonStop SQL
Hewlett-Packard Enterprise'il on ka oma kÔrge kÀttesaadavuse platvorm. See on NonStop platvorm, mis tuli turule 1976. aastal ettevÔtte Tandem Computers poolt. 1997. aastal omandas ettevÔtte Compaq, mis omakorda liitus Hewlett-Packardiga 2002. aastal.
NonStop'i kasutatakse kriitiliste rakenduste, nĂ€iteks HLR vĂ”i pangakaartide töötlemise, loomiseks. Platvormi tarnitakse seadme (appliance) kujul, mis sisaldab arvutusnode, andmesalvestussĂŒsteemi ja kommunikatsiooniseadmeid. ServerNeti vĂ”rk (kaasaegsetes sĂŒsteemides â Infiniband) teenib nii node'ide vahelist suhtlust kui ka juurdepÀÀsu andmesalvestussĂŒsteemile.
SĂŒsteemi varasemates versioonides kasutati patenteeritud protsessoreid, mis olid omavahel sĂŒnkroniseeritud: kĂ”ik toimingud viidi lĂ€bi sĂŒnkroonselt mitme protsessori poolt ja kui ĂŒks protsessor tegi vea, lĂŒlitus see vĂ€lja, samal ajal kui teine jĂ€tkas tööd. Hiljem ĂŒletas sĂŒsteem tavaprotsessoritele (esialgu MIPS, seejĂ€rel Itanium ja lĂ”puks x86) ning sĂŒnkroniseerimiseks hakati kasutama teisi mehhanisme:
- teated: igal sĂŒsteemi protsessil on topelt-"vari", millele aktiivne protsess perioodiliselt saadab teate oma seisundi kohta; kui peamine protsess ebaĂ”nnestub, alustab vari tööd viimasest teadest mÀÀratud hetkel;
- hÀÀlte andmine: andmesalvestussĂŒsteemil on spetsiaalne riistvarakomponent, mis vĂ”tab vastu mitu identset pĂ€ringut ja tĂ€idab need ainult siis, kui pĂ€ringud kattuvad; fĂŒĂŒsilise sĂŒnkroniseerimise asemel töötavad protsessorid asĂŒnkroonselt ja nende töö tulemused vĂ”rreldakse ainult sisendi/vĂ€ljundi hetkedel.
Alates 1987. aastast töötab NonStop platvormil relaatsiooniline andmebaasisĂŒsteem â esmalt SQL/MP ja hiljem SQL/MX.
Kogu andmebaas jaguneb osadeks, millest igaĂŒhe eest vastutab oma Data Access Manager (DAM). See vĂ”imaldab andmete salvestamist, vahemĂ€llu salvestamist ja lukustamismehhanismi. Andmete töötlemisega tegelevad tĂ€itmisprotsessid (Executor Server Process), mis töötavad samadel sĂ”lmedel, mis vastavad andmehalduri jaoks. SQL/MX planeerija jagab ĂŒlesanded tĂ€itjate vahel ja liidab tulemused. KooskĂ”lastatud muudatuste tegemiseks kasutatakse kahefaasilist kinnitamisprotokolli, mida tagab TMF (Transaction Management Facility) teeg.

NonStop SQL oskab prioriseerida protsesse nii, et pikad analĂŒĂŒtilised pĂ€ringud ei takistaks tehingute tĂ€itmist. Kuid selle eesmĂ€rk on just lĂŒhikeste tehingute töötlemine, mitte analĂŒĂŒs. Arendaja garanteerib NonStop-klasteri kĂ€ttesaadavuse tasemel viis "ĂŒheksa", mis tĂ€hendab, et seisak on vaid 5 minutit aastas.
SAP HANA
Esimene stabiilne andmebaasi HANA (1.0) vÀljaanne ilmus novembris 2010 ning SAP ERP pakett tÔi vÀlja HANA-le maist 2013. Platvorm pÔhineb ostetud tehnoloogiatel: TREX Search Engine (kolonnande andmete otsing), P*TIME andmebaas ja MAX DB.
SĂ”na "HANA" on akronĂŒĂŒm, High performance ANalytical Appliance. See andmebaas tarnitakse koodina, mis saab töötada igasugustel x86 serveritel, kuid tööstuslikud installatsioonid on lubatud ainult sertifitseeritud seadmetel. Ăksused HP, Lenovo, Cisco, Dell, Fujitsu, Hitachi, NEC pakuvad lahendusi. MĂ”ned Lenovo konfiguratsioonid vĂ”imaldavad isegi töötamist ilma SAN-ita â kluster GPFS kohalikel ketastel tĂ€idab ĂŒhise andmesalvestuse rolli.
Erinevalt eespool loetletud platvormidest on HANA mĂ€luandmebaas, see tĂ€hendab, et andmete peamine pilt hoitakse operatiivmĂ€lu, samas kui kettale kirjutatakse ainult logid ja perioodilised mĂ€ngupildid â taastamiseks hĂ€daolukordades.

Iga HANA klastrisĂ”lm vastutab oma andmeosa eest, andmekartograafia hoitakse spetsiaalses komponendis â Name Server, mis asub koordinaatori sĂ”lmes. Andmeid sĂ”lmede vahel ei dubleeritud. Info lukustuste kohta hoitakse samuti igas sĂ”lmes, kuid sĂŒsteemis on globaalne deadlock-detektor.
HANA klient laadib klastre topoloogia, kui ta ĂŒhendub, ja saab hiljem otseselt suhelda mis tahes sĂ”lmaga, sĂ”ltuvalt vajalikest andmetest. Kui tehing hĂ”lmab ainult ĂŒhe sĂ”lme andmeid, saab see tehing tĂ€ita kohalikult, kuid kui muutuvad mitme sĂ”lme andmed, pöördub algsĂ”lm koordinaatori poole, kes avab ja koordineerib jaotatud tehingut ning fikseerib selle optimeeritud kahefaasilise fikseerimise protokolli abil.
Koordinaatori sĂ”lm on duplikaat, seega, kui koordinaator ebaĂ”nnestub, astub koheselt tööle varusĂ”lm. Kui aga ebaĂ”nnestub andmesĂ”lm, on ainus vĂ”imalus pÀÀseda tema andmetele â kĂ€ivitada sĂ”lm uuesti. Ăldiselt hoitakse HANA klastrites varu (spare) serverit, et kaotatud sĂ”lm saaks vĂ”imalikult kiiresti uuesti kĂ€ivitatud.
Allikas: habr.com
