Skala ut med Azure SQL Database
Gäller för:Azure SQL Database
Du kan enkelt skala ut databaser i Azure SQL Database med hjälp av Elastic Database-verktygen. Med de här verktygen och funktionerna kan du använda databasresurserna i Azure SQL Database för att skapa lösningar för transaktionsarbetsbelastningar, och särskilt SaaS-program (Programvara som en tjänst). Elastic Database-funktioner består av:
- Elastic Database-klientbibliotek: Klientbiblioteket är en funktion som gör att du kan skapa och underhålla fragmenterade databaser. Se Kom igång med Elastic Database-verktyg.
- Elastic Database split-merge tool: flyttar data mellan fragmenterade databaser. Det här verktyget är användbart för att flytta data från en databas med flera klientorganisationer till en databas med en klientorganisation (eller vice versa). Mer information finns i självstudiekurs om verktyget Delad koppling för elastisk databas.
- Elastic Database-jobb (förhandsversion): Använd jobb för att hantera ett stort antal databaser i Azure SQL Database. Utför enkelt administrativa åtgärder som schemaändringar, hantering av autentiseringsuppgifter, uppdateringar av referensdata, insamling av prestandadata eller klienttelemetriinsamling (kund) med hjälp av jobb.
- Elastic Database-fråga (förhandsversion): Gör att du kan köra en Transact-SQL-fråga som sträcker sig över flera databaser. Detta möjliggör anslutning till rapporteringsverktyg som Excel, Power BI, Tableau osv.
- Elastiska transaktioner: Med den här funktionen kan du köra transaktioner som sträcker sig över flera databaser. Elastiska databastransaktioner är tillgängliga för .NET-program med hjälp av ADO .NET och integreras med den välbekanta programmeringsupplevelsen med hjälp av System.Transaction-klasserna.
Följande bild visar en arkitektur som innehåller elastic database-funktionerna i förhållande till en samling databaser.
I den här bilden representerar databasens färger scheman. Databaser med samma färg delar samma schema.
- En uppsättning SQL-databaser finns i Azure med hjälp av horisontell partitioneringsarkitektur.
- Elastic Database-klientbiblioteket används för att hantera en sharduppsättning.
- En delmängd av databaserna placeras i en elastisk pool. (Se Vad är en pool?).
- Ett Elastic Database-jobb kör schemalagda eller ad hoc-T-SQL-skript mot alla databaser.
- Verktyget för delningskoppling används för att flytta data från en shard till en annan.
- Med frågan Elastic Database kan du skriva en fråga som sträcker sig över alla databaser i sharduppsättningen.
- Med elastiska transaktioner kan du köra transaktioner som sträcker sig över flera databaser.
Varför ska du använda verktygen?
Att uppnå elasticitet och skala för molnprogram har varit enkelt för virtuella datorer och bloblagring – lägg bara till eller subtrahera enheter eller öka kraften. Men det har förblivit en utmaning för tillståndskänslig databehandling i relationsdatabaser. Utmaningar uppstod i dessa scenarier:
- Växande och krympande kapacitet för relationsdatabasdelen av din arbetsbelastning.
- Hantera hotspots som kan uppstå som påverkar en viss delmängd av data , till exempel en upptagen slutkund (klientorganisation).
Traditionellt har scenarier som dessa åtgärdats genom att investera i storskaliga servrar för att stödja programmet. Det här alternativet är dock begränsat i molnet där all bearbetning sker på fördefinierad maskinvara. I stället är distribution av data och bearbetning över många identiskt strukturerade databaser (ett utskalningsmönster som kallas "horisontell partitionering") ett alternativ till traditionella uppskalningsmetoder både när det gäller kostnader och elasticitet.
Vågrät och lodrät skalning
Följande bild visar skalningens vågräta och lodräta dimensioner, vilket är de grundläggande sätten som de elastiska databaserna kan skalas på.
Horisontell skalning syftar på att lägga till eller ta bort databaser för att justera kapacitet eller övergripande prestanda, även kallat "utskalning". Horisontell partitionering, där data partitioneras över en samling identiskt strukturerade databaser, är ett vanligt sätt att implementera horisontell skalning.
Lodrät skalning syftar på att öka eller minska beräkningsstorleken för en enskild databas, även kallad "skala upp".
De flesta databasprogram i molnskala använder en kombination av dessa två strategier. Ett program för programvara som en tjänst kan till exempel använda horisontell skalning för att etablera nya slutkunder och vertikal skalning så att varje slutkunds databas kan växa eller krympa resurser efter behov av arbetsbelastningen.
- Horisontell skalning hanteras med hjälp av Elastic Database-klientbiblioteket.
- Vertikal skalning utförs med hjälp av Azure PowerShell-cmdletar för att ändra tjänstnivån eller genom att placera databaser i en elastisk pool.
Horisontell partitionering
Horisontell partitionering är en teknik som används för att distribuera stora mängder identiskt strukturerade data över ett antal oberoende databaser. Det är särskilt populärt bland molnutvecklare som skapar SAAS-erbjudanden (Software as a Service) för slutanvändare eller företag. Dessa slutkunder kallas ofta "klienter". Horisontell partitionering kan krävas av flera orsaker:
- Den totala mängden data är för stor för att passa in i begränsningarna för en enskild databas
- Transaktionsdataflödet för den övergripande arbetsbelastningen överskrider funktionerna i en enskild databas
- Klienter kan kräva fysisk isolering från varandra, så separata databaser behövs för varje klientorganisation
- Olika delar av en databas kan behöva finnas i olika geografiska områden av kompatibilitets-, prestanda- eller geopolitiska skäl.
I andra scenarier, till exempel inmatning av data från distribuerade enheter, kan horisontell partitionering användas för att fylla en uppsättning databaser som organiseras temporärt. En separat databas kan till exempel dedikeras till varje dag eller vecka. I så fall kan partitioneringsnyckeln vara ett heltal som representerar datumet (som finns i alla rader i de fragmenterade tabellerna) och frågor som hämtar information för ett datumintervall måste dirigeras av programmet till den delmängd av databaser som täcker det aktuella intervallet.
Horisontell partitionering fungerar bäst när varje transaktion i ett program kan begränsas till ett enda värde för en partitioneringsnyckel. Det säkerställer att alla transaktioner är lokala för en specifik databas.
Flera klientorganisationer och en klientorganisation
Vissa program använder den enklaste metoden för att skapa en separat databas för varje klientorganisation. Den här metoden är mönstret för partitionering av enskild klientorganisation som ger isolering, säkerhetskopiering/återställning och resursskalning i klientorganisationens kornighet. Med sharding för en enskild klientorganisation associeras varje databas med ett specifikt klient-ID-värde (eller kundnyckelvärde), men den nyckeln behöver inte alltid finnas i själva data. Det är programmets ansvar att dirigera varje begäran till lämplig databas – och klientbiblioteket kan förenkla detta.
Andra scenarier packar ihop flera klienter i databaser i stället för att isolera dem till separata databaser. Det här mönstret är ett typiskt mönster för horisontell partitionering av flera klientorganisationer – och det kan bero på att ett program hanterar ett stort antal små klienter. I partitionering av flera klientorganisationer är raderna i databastabellerna alla utformade för att ha en nyckel som identifierar klientorganisations-ID:t eller partitioneringsnyckeln. Återigen ansvarar programnivån för att dirigera en klients begäran till lämplig databas, och detta kan stödjas av klientbiblioteket för elastisk databas. Dessutom kan säkerhet på radnivå användas för att filtrera vilka rader varje klient kan komma åt – mer information finns i Program för flera klientorganisationer med elastiska databasverktyg och säkerhet på radnivå. Omdistribuering av data mellan databaser kan behövas med shardingmönstret för flera klientorganisationer och underlättas av verktyget för delad sammanfogning av elastisk databas. Läs mer om designmönster för SaaS-program med elastiska pooler i Designmönster för SaaS-program med flera klienter med Azure SQL Database.
Flytta data från flera till enstaka databaser
När du skapar ett SaaS-program är det vanligt att erbjuda potentiella kunder en utvärderingsversion av programvaran. I det här fallet är det kostnadseffektivt att använda en databas med flera klientorganisationer för data. Men när en potentiell kund blir kund är en databas med en enda klient bättre eftersom den ger bättre prestanda. Om kunden hade skapat data under utvärderingsperioden använder du verktyget för delningskoppling för att flytta data från flera klientorganisationer till den nya databasen med en klientorganisation.
Kommentar
Det går inte att återställa från databaser med flera klientorganisationer till en enda klientorganisation.
Nästa steg
En exempelapp som demonstrerar klientbiblioteket finns i Kom igång med Elastic Database-verktyg.
Information om hur du konverterar befintliga databaser för att använda verktygen finns i Migrera befintliga databaser för att skala ut.
Information om den elastiska poolen finns i Pris- och prestandaöverväganden för en elastisk pool eller skapa en ny pool med elastiska pooler.
Ytterligare resurser
Använder du inte elastiska databasverktyg än? Kolla in vår komma igång-guide. Om du har frågor kan du kontakta oss på microsofts Q&A-frågesida för SQL Database och för funktionsförfrågningar, lägga till nya idéer eller rösta på befintliga idéer i SQL Database-feedbackforumet.