Distribuerade databashanteringssystem för företag

CAP-teoremet Ă€r hörnstenen i teorin om distribuerade system. SjĂ€lvklart tystnar debatten kring den aldrig: varken definitionerna Ă€r kanoniska, och det finns inget strikt bevis... ÄndĂ„, fast förankrade i sunt förnuftℱ, förstĂ„r vi intuitivt att teoremet Ă€r korrekt.

Distribuerade databashanteringssystem för företag

Det enda som inte Ă€r uppenbart Ă€r innebörden av bokstaven "P". NĂ€r en kluster splittras, beslutar den – antingen att inte svara förrĂ€n ett kvorum har nĂ„tts, eller att ge de data som finns. Beroende pĂ„ resultatet av detta val klassificeras systemet som antingen CP eller AP. Cassandra, till exempel, kan bete sig bĂ„de sĂ„ och sĂ„, beroende inte ens av klusterinstĂ€llningarna, utan av parametrarna för varje specifik förfrĂ„gan. Men om systemet inte Ă€r "P", och det har splittrats, vad hĂ€nder dĂ„?

Svaret pÄ denna frÄga Àr nÄgot ovÀntat: CA-klustret kan inte splittras.
Vad Àr det för kluster som inte kan splittras?

En nödvÀndig egenskap hos ett sÄdant kluster Àr ett gemensamt datalagringssystem. I de flesta fall innebÀr detta en anslutning via SAN, vilket begrÀnsar anvÀndningen av CA-lösningar till stora företag som kan upprÀtthÄlla SAN-infrastruktur. För att flera servrar kan arbeta med samma data, krÀvs ett kluster-filsystem. SÄdana filsysten finns i portföljerna hos HPE (CFS), Veritas (VxCFS) och IBM (GPFS).

Oracle RAC

Real Application Cluster-alternativet introducerades första gÄngen 2001 i Oracle 9i. I ett sÄdant kluster arbetar flera instanser servern med samma databas.
Oracle kan arbeta bĂ„de med kluster-filsystem och med sin egen lösning – ASM, Automatic Storage Management.

Varje instans hĂ„ller sin egen logg. En transaktion utförs och registreras av en instans. Vid en instansfel lĂ€ser en av de överlevande noderna i klustret (instanserna) dennes logg och Ă„terstĂ€ller de förlorade data – dĂ€rigenom sĂ€kerstĂ€lls tillgĂ€ngligheten.

Alla instanser upprÀtthÄller sina egna cacheminnen, och samma sidor (block) kan finnas i cacheminnena hos flera instanser samtidigt. Dessutom, om en instans behöver en viss sida, och den finns i cacheminnet hos en annan instans, kan den fÄ den frÄn "grannen" genom mekanismen cache fusion istÀllet för att lÀsa frÄn disken.

Distribuerade databashanteringssystem för företag

Men vad hÀnder om en av instanserna behöver Àndra data?

En egenskap hos Oracle Àr att den inte har nÄgon dedikerad lÄsningsservice: om servern vill lÄsa en rad, sÀtts uppgiften om lÄsningen direkt pÄ den minnessida dÀr den lÄsta raden finns. Tack vare denna metod Àr Oracle en mÀstare pÄ prestanda bland monolitiska databaser: lÄsningsservicen blir aldrig en flaskhals. Men i en klusterkonfiguration kan sÄdan arkitektur leda till intensiv nÀtverkstrafik och ömsesidiga lÄsningar.

SÄ snart en post lÄses, meddelar instansen alla andra instanser om att sidan dÀr denna post finns har tagits i monopollÀge. Om en annan instans behöver Àndra posten pÄ samma sida mÄste den vÀnta tills Àndringarna pÄ sidan har bekrÀftats, dvs. informationen om Àndringen har skrivits till loggen pÄ disken (under tiden kan transaktionen fortsÀtta). Det kan ocksÄ hÀnda att sidan Àndras sekventiellt av flera instanser, och dÄ mÄste det vid skrivning av sidan till disken tas reda pÄ vilken som har den aktuella versionen av denna sida.

Oavsiktlig uppdatering av samma sidor via olika noder i RAC leder till en dramatisk sÀnkning av databasens prestanda - till den grad att klustrets prestanda kan vara lÀgre Àn en enda instans.

RÀtt anvÀndning av Oracle RAC innebÀr fysisk uppdelning av data (t.ex. med hjÀlp av mekanismen för partitionerade tabeller) och Ätkomst till varje datamÀngd via en dedikerad nod. Huvudsyftet med RAC blev inte horisontell skalning, utan att sÀkerstÀlla redundans.

Om en nod slutar svara pÄ heartbeat, startar den nod som först upptÀckte detta proceduren för röstning pÄ disken. Om den saknade noden inte heller registreras hÀr, tar en av noderna pÄ sig ansvaret för datarÀddning:

  • «fryser» alla sidor som fanns i cachen för den saknade noden;
  • lĂ€ser loggarna (redo) för den saknade noden och Ă„teranvĂ€nder Ă€ndringarna som registrerades i dessa loggar, samtidigt som det kontrollerar om andra noder har nyare versioner av de Ă€ndrade sidorna;
  • Ă„terstĂ€ller ofullstĂ€ndiga transaktioner.

För att underlĂ€tta vĂ€xlingen mellan noder finns det i Oracle ett begrepp kallat service – ett virtuellt instance. En instans kan betjĂ€na flera tjĂ€nster, och en tjĂ€nst kan flytta mellan noder. En applikationsinstans som betjĂ€nar en viss del av databasen (t.ex. en kundgrupp) arbetar med en tjĂ€nst, och tjĂ€nsten som ansvarar för den delen av databasen flyttar till en annan nod nĂ€r en nod gĂ„r ner.

IBM Pure Data Systems for Transactions

Klusterlösningen för databashanteringssystem etablerades i den blÄkraftiga portföljen 2009. Ideologiskt Àr det en arvtagare till klustret Parallel Sysplex, som Àr byggt pÄ "vanlig" utrustning. 2009 slÀpptes produkten DB2 pureScale, som Àr en mjukvarupaket, och 2012 erbjuder IBM en programvaru-hÄrdvarukomponent (appliance) kallad Pure Data Systems for Transactions. MÄste inte förvÀxlas med Pure Data Systems for Analytics, som Àr inget annat Àn ett omdöpt Netezza.

Arkitekturen pureScale liknar vid första ögonkastet Oracle RAC: pĂ„ samma sĂ€tt Ă€r flera noder anslutna till ett gemensamt datalager, och pĂ„ varje nod körs en egen instans av databashanteringssystemet med sina egna minnesomrĂ„den och transaktionsloggar. Men till skillnad frĂ„n Oracle har DB2 en dedikerad lĂ„sservice, representerad av ett set av processer db2LLM*. I klusterkonfigurationen placeras denna service pĂ„ en separat nod, som i Parallel Sysplex kallas coupling facility (CF), och i Pure Data – PowerHA.

PowerHA tillhandahÄller följande tjÀnster:

  • lĂ„smanager;
  • global buffertcache;
  • omrĂ„de för mellanprocesskommunikation.

För dataöverföring mellan PowerHA och databaserna anvÀnds fjÀrrÄtkomst till minnet, sÄ klusterinterkonnekt mÄste stödja RDMA-protokollet. PureScale kan anvÀnda bÄde Infiniband och RDMA över Ethernet.

Distribuerade databashanteringssystem för företag

Om en nod behöver en sida, och den sidan inte finns i cachen, begÀr noden sidan i den globala cachen, och först om den inte finns dÀr, lÀser den frÄn disken. Till skillnad frÄn Oracle gÄr förfrÄgan endast till PowerHA och inte till angrÀnsande noder.

Om en instans ska Àndra en rad, lÄser den den i exklusivt lÀge och sidan dÀr raden finns i delat lÀge. Alla lÄs registreras i den globala lÄshanteraren. NÀr transaktionen Àr slutförd skickar noden ett meddelande till lÄshanteraren, som kopierar den Àndrade sidan till den globala cachen, tar bort lÄsningarna och ogiltigförklarar den Àndrade sidan i kassor frÄn andra noder.

Om sidan som innehÄller den Àndrade raden redan Àr lÄst, kommer lÄshanteraren att lÀsa den Àndrade sidan frÄn minnet av noden som gjorde Àndringarna, ta bort lÄsningen, ogiltigförklara den Àndrade sidan i kassor frÄn andra noder och ge lÄsningen av sidan till noden som begÀrde den.

"Smutsiga", det vill sÀga Àndrade, sidor kan skrivas till disk bÄde frÄn en vanlig nod och frÄn PowerHA (castout).

Vid fel pÄ en av noderna i pureScale Àr ÄterstÀllningen begrÀnsad till de transaktioner som vid tidpunkten för fel fortfarande inte hade avslutats: sidor som Àndrades av denna nod i avslutade transaktioner finns i den globala cachen pÄ PowerHA. Noden startas om i en nedskuren konfiguration pÄ en av servrarna i klustret, rullar tillbaka de ouppklarade transaktionerna och frigör lÄsningar.

PowerHA fungerar pÄ tvÄ servrar, och den primÀra noden replikerar sitt tillstÄnd synkront. Vid fel pÄ den primÀra noden fortsÀtter PowerHA-klustret att arbeta med den backup-nod som finns.
SjÀlvklart, om man hÀnvisar till en datamÀngd via en nod, kommer den övergripande prestandan för klustret att vara högre. PureScale kan till och med mÀrka att ett visst datakluster behandlas av en nod, och dÄ kommer alla lÄs som rör detta omrÄde att hanteras av noden lokalt utan kommunikation med PowerHA. Men sÄ snart applikationen försöker fÄ Ätkomst till dessa data via en annan nod, kommer den centraliserade lÄshanteringen att Äterupptas.

IBMs interna belastningstester, bestÄende av 90% lÀsning och 10% skrivning, vilket liknar en verklig industriell belastning, visar nÀstan linjÀr skalning upp till 128 noder. TyvÀrr avslöjas inte testvillkoren.

HPE NonStop SQL

Hewlett-Packard Enterprise har ocksĂ„ sin egen högtillgĂ€ngliga plattform. Det Ă€r en NonStop-plattform som lanserades pĂ„ marknaden 1976 av Tandem Computers. År 1997 förvĂ€rvades företaget av Compaq, som i sin tur gick samman med Hewlett-Packard Ă„r 2002.

NonStop anvĂ€nds för att bygga kritiska applikationer – till exempel HLR eller hantering av bankkort. Plattformen levereras i form av en programvaru- och hĂ„rdvarukomplex (appliance), som inkluderar berĂ€kningsnoder, lagringssystem och kommunikationsutrustning. NĂ€tverket ServerNet (i moderna system – Infiniband) anvĂ€nds bĂ„de för kommunikation mellan noder och för Ă„tkomst till lagringssystemet.

I de tidiga versionerna av systemet anvÀndes proprietÀra processorer, som var synkroniserade med varandra: alla operationer utfördes synkront av flera processorer, och sÄ fort en av processorerna gjorde ett fel stÀngdes den av medan den andra fortsatte sin verksamhet. Senare gick systemet över till vanliga processorer (först MIPS, sedan Itanium och slutligen x86), och andra mekanismer började anvÀndas för synkronisering:

  • meddelanden: varje systemprocess har en dubbelgĂ„ngare som kallas "skugga", som den aktiva processen regelbundet skickar meddelanden om sitt tillstĂ„nd; vid fel pĂ„ den primĂ€ra processen börjar den skuggliknande processen arbete frĂ„n den punkt som anges av det senaste meddelandet;
  • omröstning: lagringssystemet har en speciell hĂ„rdvarukomponent som tar emot flera identiska förfrĂ„gningar och utför dem endast om förfrĂ„gningarna överensstĂ€mmer; istĂ€llet för fysisk synkronisering arbetar processorerna asynkront, och resultaten av deras arbete jĂ€mförs endast vid in- och utmatning.

Sedan 1987 har en relationsdatabas, först SQL/MP och senare SQL/MX, fungerat pÄ NonStop-plattformen.

Hela databasen delas upp i delar, och varje del ansvaras av sin egen Data Access Manager (DAM). Den sÀkerstÀller dataskrivning, caching och lÄsmekanismer. Databehandling hanteras av exeuterande processer (Executor Server Process) som arbetar pÄ samma noder som de motsvarande datamanagerna. SQL/MX-schemalÀggaren fördelar uppgifter mellan utövare och samlar resultaten. NÀr det Àr nödvÀndigt att göra samordnade Àndringar anvÀnds en tvÄfaskommittéprotokoll, utförd av TMF-biblioteket (Transaction Management Facility).

Distribuerade databashanteringssystem för företag

NonStop SQL kan prioritera processer sÄ att lÄnga analytiska frÄgor inte stör utförandet av transaktioner. Dess syfte Àr dock just att behandla korta transaktioner, inte analys. Utvecklaren garanterar tillgÀnglighet för NonStop-klustret pÄ nivÄ fem "nior", vilket betyder att stillestÄndet bara utgör 5 minuter per Är.

SAP HANA

Den första stabila versionen av databashanteringssystemet HANA (1.0) slÀpptes i november 2010, och SAP ERP-paketet övergick till HANA i maj 2013. Plattformen baseras pÄ förvÀrvade teknologier: TREX-sökmotorn (sökning i kolumnlagring), databashanteringssystemet P*TIME och MAX DB.

SjÀlva ordet "HANA" Àr en akronym, High performance ANalytical Appliance. Detta databashanteringssystem levereras som kod som kan köras pÄ alla x86-servrar, men industriinstallationer tillÄts endast pÄ certifierad hÄrdvara. Det finns lösningar frÄn HP, Lenovo, Cisco, Dell, Fujitsu, Hitachi, NEC. Vissa Lenovo-konfigurationer tillÄter till och med drift utan SAN - klustret GPFS pÄ lokala diskar fungerar som en gemensam lagring.

Till skillnad frÄn de ovan nÀmnda plattformarna Àr HANA ett minnesbaserat databashanteringssystem, vilket innebÀr att den primÀra bilden av data lagras i RAM, medan endast loggar och periodiska avbildningar skrivs till disk - för att möjliggöra ÄterstÀllning vid en krasch.

Distribuerade databashanteringssystem för företag

Varje nod i HANA-klustret ansvarar för sin del av data, och datakartan lagras i en speciell komponent - Name Server, som Àr belÀgen pÄ samordningsnoden. Data dupliciteter inte mellan noder. Information om lÄs lagras ocksÄ pÄ varje nod, men systemet har en global detektor för dödlÀgen.

HANA-klienten laddar ner topologin för klustret nÀr den ansluter och kan sedan direkt kommunicera med vilken nod som helst beroende pÄ vilka data som krÀvs. Om en transaktion berör data frÄn en enda nod kan den utföras lokalt av den noden, men om flera noders data förÀndras, kontaktar initiatorn noden för att samordna en distribuerad transaktion, vilket bekrÀftas med ett optimerat protokoll för tvÄfasÄterkoppling.

Koordinatornoden Àr duplikerad, vilket innebÀr att om koordinatorn gÄr ner, trÀder reservnoden omedelbart i kraft. Om en nod med data gÄr ner Àr det enda sÀttet att fÄ Ätkomst till dess data att starta om noden. Vanligtvis har HANA-kluster en reservserver för att snabbt kunna starta om en förlorad nod.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster