Skala ut med Azure SQL Database

GÄLLER FÖR: Azure SQL Database

Du kan enkelt skala ut databaser i Azure SQL Database med elastisk databas verktyg. Med dessa verktyg och funktioner kan du använda databasresurserna i Azure SQL Database för att skapa lösningar för transaktionsarbetsbelastningar, särskilt SaaS-program (Programvara som en tjänst). elastisk databas funktioner består av följande:

Följande bild visar en arkitektur som innehåller elastisk databas funktioner i förhållande till en samling databaser.

I den här bilden representerar färgerna i databasen scheman. Databaser med samma färg delar samma schema.

  1. En uppsättning SQL-databaser finns i Azure med hjälp av arkitekturen för horisontell partitionering.
  2. Den elastisk databas klientbiblioteket används för att hantera en sharduppsättning.
  3. En delmängd av databaserna läggs i en elastisk pool. (Se Vad är en pool?).
  4. Ett elastisk databas kör schemalagda eller ad hoc T-SQL-skript mot alla databaser.
  5. Split-merge-verktyget används för att flytta data från en shard till en annan.
  6. Med elastisk databas kan du skriva en fråga som omfattar alla databaser i sharduppsättningen.
  7. Med elastiska transaktioner kan du köra transaktioner som sträcker sig över flera databaser.

Elastic Database-verktyg

Varför ska jag använda verktygen?

Det har varit enkelt att uppnå elasticitet och skalning för molnprogram för virtuella datorer och bloblagring – det är bara att lägga till eller subtrahera enheter eller öka kraften. Men det har fortfarande varit en utmaning för tillståndsfull databehandling i relationsdatabaser. Utmaningarna uppstod i dessa scenarier:

  • Att öka och minska kapaciteten för relationsdatabasdelen av din arbetsbelastning.
  • Hantera hotspots som kan uppstå som påverkar en specifik delmängd av data – till exempel en upptagen slutanvändare (klient).

Traditionellt har scenarier som dessa åtgärdats genom att investera i servrar i större skala 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 vad gäller kostnad och elasticitet.

Horisontell och vertikal skalning

Följande bild visar de vågräta och lodräta dimensionerna för skalning, som är de grundläggande sätten att skala elastiska databaser.

Horisontell kontra lodrät utskalning

Horisontell skalning syftar på att lägga till eller ta bort databaser för att justera kapacitet eller övergripande prestanda, vilket även kallas "skala ut". Horisontell partitionering, där data partitioneras över en samling identiskt strukturerade databaser, är ett vanligt sätt att implementera horisontell skalning.

Vertikal skalning syftar på att öka eller minska beräkningsstorleken för en enskild databas, även kallat "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 slutanvändare och vertikal skalning så att varje slutanvändares databas kan växa eller krympa resurser efter behov av arbetsbelastningen.

  • Horisontell skalning hanteras med hjälp elastisk databas klientbiblioteket.
  • Vertikal skalning åstadkoms med Azure PowerShell-cmdlets för att ändra tjänstnivån eller genom att placera databaser i en elastisk pool.

Horisontell partitionering

Horisontell partitionering är en teknik för att distribuera stora mängder identiskt strukturerade data över ett antal oberoende databaser. Det är särskilt populärt när molnutvecklare skapar SAAS-erbjudanden (Programvara som en tjänst) för slutanvändare eller företag. Dessa slutanvändare kallas ofta för "klienter". Horisontell partitionering kan krävas av olika orsaker:

  • Den totala mängden data är för stor för att passa 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 krävs för varje klientorganisation
  • Olika avsnitt i en databas kan behöva finnas i olika geografiska områden av efterlevnads-, 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 är ordnade tillfälligt. En separat databas kan till exempel vara dedikerad till varje dag eller vecka. I så fall kan shardingnyckeln vara ett heltal som representerar datumet (finns i alla rader i de horisontella tabellerna) och frågor som hämtar information för ett datumintervall måste dirigeras av programmet till den delmängd av databaser som omfattar intervallet i fråga.

Horisontell partitionering fungerar bäst när varje transaktion i ett program kan begränsas till ett enda värde för en shardingnyckel. Det säkerställer att alla transaktioner är lokala för en specifik databas.

Flera innehavare och en enskild klientorganisation

Vissa program använder den enklaste metoden för att skapa en separat databas för varje klientorganisation. Den här metoden är det mönster för horisontell partitionering av enskilda klienter som ger isolering, säkerhetskopiering/återställning och resursskalning på klientorganisationens kornighet. Vid horisontell partitionering av 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 rätt databas – och klientbiblioteket kan förenkla detta.

Enskild klientorganisation jämfört med flera klient

Andra scenarier paketerar flera klienter i databaser i stället för att isolera dem i separata databaser. Det här mönstret är ett typiskt mönster för horisontell partitionering för flera klienter – och det kan styras av det faktum att ett program hanterar ett stort antal små klienter. Vid horisontell partitionering för flera klienter är alla rader i databastabellerna utformade för att ha en nyckel som identifierar klient-ID:t eller shardingnyckeln. Återigen ansvarar programnivån för att dirigera en klientorganisations begäran till lämplig databas, och detta kan stödjas av elastic database-klientbiblioteket. Dessutom kan säkerhet på radnivå användas för att filtrera vilka rader varje klient kan komma åt . Mer information finns i Program med elastiska databasverktyg för flera innehavare och säkerhet på radnivå. Omfördelning av data mellan databaser kan behövas med mönstret för horisontell partitionering för flera innehavare och underlättas av verktyget för att dela och sammanslå elastiska databaser. 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 databaser till databaser med en enda klient

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 för flera innehavare för data. Men när en potentiell kund blir en kund är en databas för en enskild klient bättre eftersom den ger bättre prestanda. Om kunden har skapat data under utvärderingsperioden använder du verktyget split-merge för att flytta data från flera klienter till den nya databasen för en enskild klientorganisation.

Nästa steg

En exempelapp som visar klientbiblioteket finns i Kom igång med elastisk databas 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 elastic database-verktyg ännu? Kolla in vår Komma igång guide. Om du har frågor kan du kontakta oss på Microsoft Q&A question page for SQL Database and for feature requests (Microsoft Q&En 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.