I mitt tidigare inlägg har vi sett några grundläggande skillnader mellan relationella och icke-relationella databaser. I det här inlägget ska vi prata om skalbarheten för dessa två.
Skalbarhet
Det är en förmåga hos ett system som enkelt kan ta emot snabba inkommande data utan större prestandaproblem. Detta är huvudfaktorn för att alla system ska ge god skalbarhet. Det finns två typer av skalningsmetoder som kallas vertikal och horisontell skalning.
Vertikal skalning
Alla Relationella databasverktyg stöder vertikal skalning. Detta är metoden för att öka kraften i systemet genom att lägga till ytterligare CPU, minne och diskutrymme. Så för att möjliggöra snabba inkommande data är den enda produktionsservern optimerad för att skala upp. I denna skalningsteknik finns det alltid en enda produktionsserver som kan anslutas av alla applikationer och användare. En klustermiljö kan skapas med vissa noder och replikera data över noder.
På grund av ACID-egenskaper bör alla noder ha samma uppsättning data och datasynkronisering blir komplicerad om det finns flera noder i klustret. Detta är mycket optimerat för lässkalning. Vertikal skalning är också känd som uppskalning
Fördelen med denna skalningsmetod är den snäva integrationen av data och dess konsistens över noderna i ett kluster. Alla noder kommer att ha samma uppsättning data och om det finns ett problem med produktionsservern kommer en annan nod automatiskt att anslutas av applikationerna. Så detta kluster är känt som Fail-over-kluster.
Horisontell skalning
Alla de icke-relationella databasverktygen stöder horisontell skalning. Detta är metoden för att lägga till fler datorer i nätverket för att möjliggöra snabb inkommande data. Det är lätt att lägga till fler noder i klustret för att möjliggöra datatillväxt. Data delas upp automatiskt och bearbetas över noder i ett kluster. Detta är en distribuerad datamiljö. Hadoop Distributed File System (HDFS) är ett klassiskt exempel på detta. Horisontell skalning kallas även Scale-out.
Fördelen med denna skalningsteknik är att eftersom data delas och replikeras över noder om någon av noderna går offline, kan applikationen fortfarande ha data från andra noder och detta garanterar tillgängligheten av data hela tiden. Denna metod är mycket användbar för de fall där inga JOINs krävs bland nodernas data. Detta är också användbart för att separera data och ha dem på olika geografiska platser.
Även om båda dessa skalningstekniker har fördelar och nackdelar, kan en bra miljö blanda båda dessa för att få enastående uppskalning och utskalning. Vi kan ha en uppskalning av läs- och skrivdatabas i en enda server som kräver ACID-egenskaper och har en utskalning av distribuerad historisk data över flera noder för datautvinningsändamål.