Skala upp jämfört med att skala ut
Introduktion till skalbarhet för databaser inom molnbaserad databehandling.
Data – överallt – är vad vi pratar om när vi pratar om skalbarhet
Skalbarhet i molnbaserad databehandling är möjligheten att snabbt och enkelt öka eller minska storleken på eller kraften i en IT-lösning eller resurs. Termen skalbarhet kan referera till ett systems möjlighet att hantera en växande mängd arbete, men när vi pratar om att skala upp kontra skala ut syftar vi ofta på databaser och stora mängder data.
För dagens apputvecklare är det viktigt med skalbara databaser. Anta att en ny app plötsligt blir populär och att efterfrågan växer kraftigt, från en handfull användare till miljontals användare över hela världen. En av de viktigaste sakerna för att apputvecklare ska kunna hålla jämna steg med efterfrågan och minimera stilleståndstiden är möjligheten att skala effektivt.
I den här diskussionen kring utskalning respektive uppskalning fokuserar vi på sätt som skalbarhet kan hjälpa oss med anpassning till och hantering av de stora mängder data, föränderliga datavolymer och förändringar i arbetsbelastningsmönster som genereras från molnet, mobiltjänster, sociala media och stordata.
Skala ut jämfört med skala upp
Det finns i grund och botten två typer av skalning för databaser:
Vertikal skalning, (upp- eller nedskalning), där du ökar eller minskar beräkningskraften eller databaserna efter behov – antingen genom att ändra prestandanivå eller genom att använda elastiska databaspooler för automatisk anpassning efter dina arbetsbelastningsbehov.
Horisontell skalning, (ut- eller inskalning), där du lägger till fler databaser eller delar upp en stor databas i mindre noder (med hjälp av en datapartitioneringsmetod som kallas horisontell partitionering) för att få en enklare och snabbare hantering mellan servrar.
Skala upp vertikalt
Vertikal skalning används när du snabbt behöver kunna åtgärda ett prestandaproblem som du inte kan lösa med hjälp av klassiska databasoptimeringstekniker, till exempel frågeändringar eller indexering. Uppskalning är användbart för att hantera toppar i arbetsbelastningar om den aktuella prestandanivån inte uppfyller alla behov. Med uppskalning hanterar du belastningstoppar på ett enkelt sätt genom att lägga till fler resurser. När resurserna inte behövs längre kan du skala ned till det ursprungliga tillståndet och minska molnkostnaderna.
Skala upp om:
-
Du ser att dina arbetsbelastningar har nått en viss prestandagräns, till exempel gränsen för CPU eller I/O.
-
Du snabbt behöver kunna åtgärda prestandaproblem som inte kan lösas med klassisk databasoptimering.
-
Du behöver en lösning som gör att du kan ändra och anpassa tjänstnivån efter föränderliga svarstidskrav.
Skala ut horisontellt
Apputvecklare börjar överväga att skala ut eller skala horisontellt när de inte kan få tillräckligt med resurser för sina arbetsbelastningar, även då de körs på de högsta prestandanivåerna. Med horisontell skalning fördelas data på flera databaser, eller så kallade ”shards” (skärvor), mellan servrar och varje shard kan skalas upp eller ned oberoende av varandra.
Hur förbättrar partitionering av data skalbarheten? När du skalar upp en enskild databas genom att lägga till resurser, till exempel virtuella datorer (VM), når den så småningom en fysisk maskinvarugräns. Eftersom varje datapartition finns på en separat server kan du skala ut ett system nästan obegränsat om du delar upp data på flera shards.
Vissa typer av databastekniker, särskilt icke-relationella eller NoSQL-databaser, utvecklas med unika funktioner för att skala ut data horisontellt genom sharding, vilket gör att de kan hantera stora, orelaterade, obestämda eller snabbt föränderliga data.
Vissa relationsdatabastjänster (SQL) som ursprungligen erbjöd tjänster för att skala upp eller ned börjar nu erbjuda spännande alternativ för att matcha skalbarhetsfördelarna med icke-relationella databaser. Med tjänster i hyperskala som Microsoft Azure SQL Database i hyperskala och Azure Database for PostgreSQL i hyperskala kan användare snabbt skala upp lagringen till 100 TB med en flexibel, molnbaserad arkitektur så att lagringen kan växa efter behov. Användarna får en nästan omedelbar säkerhetskopiering och kan återställa databaser på bara några minuter.
Skala ut om:
-
Du har geo-distribuerade program där varje app ska komma åt en del av data i regionen. Varje app kommer bara åt den shard som är associerad med den regionen utan att påverka andra shards.
-
Du har ett globalt scenario för horisontell partitionering, till exempel belastningsutjämning, där du har ett stort antal geo-distribuerade klienter som infogar data i sina egna dedikerade shards.
-
Gränsen har nåtts för dina prestandakrav, även på de högsta prestandanivåerna i din tjänst, eller om dina data inte får plats i en enskild databas.
Automatisk skalning
Automatisk skalning är processen att automatiskt och dynamiskt matcha resurser för att uppfylla prestandakraven i ett system. När arbetsmängden växer kan appar behöva ytterligare resurser för att upprätthålla de prestandanivåer som krävs eller för att möta en växande efterfrågan. Om efterfrågan minskar och de ytterligare resurserna inte längre behövs kan du minska molnutgifterna med hjälp av en automatisk tjänst som avallokerar de resurser som inte används.
Automatisk skalning utnyttjar elasticiteten hos molndrivna miljöer. Det minskar hanteringskostnaderna eftersom systemoperatörer inte behöver fatta ständiga beslut om att lägga till eller ta bort resurser eller kontrollera systemets prestanda.
Det finns två huvudsakliga sätt att skala appar, vertikalt eller horisontellt, men det är inte lika vanligt att automatisera vertikal skalning, eftersom en uppskalning ofta innebär att systemet blir otillgängligt medan det omdistribueras.
Automatisk skalning är vanligare vid horisontell skalning eftersom en ut- eller inskalning innebär att instanser av en resurs läggs till eller tas bort och att appen fortsätter köras utan avbrott när nya resurser etableras. Om efterfrågan minskar kan resurserna stängas av sömlöst utan driftavbrott och avallokeras.
Många leverantörer av molnbaserade system, inklusive Microsoft Azure, stöder automatisk horisontell skalning.
Vanliga frågor och svar
-
En databas är en samling relaterad information som lagras och organiseras så att den blir enklare att hantera och komma åt. När nya data och datatyper genereras i en svindlande hastighet blir det en utmaning att hålla dessa data organiserade, tillgängliga och säkra. Databashanteringssystem (DBMS), som innehåller hanteringsverktyg, används ofta för att hantera stora mängder data.
Nya databastyper och tekniker utvecklas ständigt för att kunna hantera den stora mängden data som genereras från molnet, mobiltjänster, sociala medier och stordata.
-
NoSQL-databaser, även kallade icke-relationella databaser eller "inte bara" SQL (Not only SQL), använder olika databastekniker för att hantera datalagring och datahämtning på ett sätt som skiljer sig från traditionella relationsdatabaser (SQL).
NoSQL-databaser kräver inte något fördefinierat schema och kan använda flera datamodeller, vilket gör att de kan hantera stora volymer ostrukturerade data och skala stordata-databasprojekt på ett mycket effektivt sätt.
-
PostgreSQL är en robust databas med öppen källkod som fungerar med relationsbaserade och icke-relationella frågor, och den är känd för sin tillförlitlighet och dataintegritet. PostgreSQL används ofta inom områden som finansiella tjänster, tillverkning, geografiska informationssystem för myndigheter och webbteknik. Utvecklare skapar appar med PostgreSQL och administratörer litar på att PostgreSQL skyddar deras data.
-
Cachelagring är en vanlig teknik som utvecklare och IT-proffs använder för att förbättra prestanda och skalbarhet i system. Cachelagring innebär att data som används ofta kopieras tillfälligt till en snabb lagring som ligger nära programmet. Om den här snabba datalagringen ligger närmare programmet än originalkällan kan cachelagring ge en betydligt kortare svarstid för klientprogram. Det går helt enkelt att komma åt data snabbare. Utvecklare utformar ofta program så att bearbetade data cachelagras och sedan hämtas från cachelagringen för att kunna hantera begäranden snabbare jämfört med vanliga databasfrågor.
-
Horisontell datapartitionering (shards) är en typ av partitionering som gör att du kan dela upp en stor databas i mindre databaser, som kan hanteras snabbt och enkelt på flera servrar.
-
En plattform som en tjänst, ofta förkortad PaaS, är en tjänst från en molnleverantör som erbjuder en miljö på begäran för apputveckling, testning, leverans och hantering. PaaS gör det enklare för utvecklare att snabbt skapa webb- eller mobilappar utan att behöva konfigurera eller hantera den underliggande infrastrukturen med servrar, lagring, nätverk och databaser som behövs för utveckling.
Resurser
Utforska molnskalbarhet med Azure
Hitta en metod för att skala upp eller ut som passar ditt scenario i lokala miljöer, miljöer med flera moln och gränsmiljöer. Azures serie med databastjänster har flera helt hanterade relationsdatabaser, NoSQL-databaser och minnesinterna databaser med både egenutvecklade motorer och öppen källkod – allt som den moderna apputvecklaren behöver.
Spara tid och pengar med automatiserad infrastrukturhantering, bland annat automatiseringslösningar för skalbarhet, tillgänglighet och säkerhet.
Relaterade produkter och tjänster
Azure SQL
Familjen med SQL-molndatabaser erbjuder flexibla alternativ för migrering, modernisering och utveckling av appar.
Azure Cosmos DB
Snabb NoSQL-databas med öppna API:er för alla skalor.
Azure PostgreSQL
Fullständigt hanterad, intelligent och skalbar PostgreSQL.
Azure SQL Database
Hanterad, intelligent SQL i molnet.
Azure SQL Managed Instance
Hanterad, alltid uppdaterad SQL-instans i molnet.
SQL Server på virtuella datorer
Migrera SQL Server-arbetsbelastningar till molnet med lägsta totala ägandekostnad.
Azure Database for MySQL
Fullständigt hanterad, skalbar MySQL-databas.
Azure Maria DB
Hanterad MariaDB-databastjänst för apputvecklare.
Azure Cache for Redis
Påskynda program med datacachning med stora dataflöden och låg fördröjning.
-
Skala utan gränser med hanterade databaser
Om dina databaser hanteras av Microsoft Azure blir ditt jobb enklare och du kan fokusera på att skapa appar.