Skala ut med Azure SQL DatabaseScaling out with Azure SQL Database

Du kan enkelt skala ut Azure SQL-databaser med hjälp av den elastisk databas verktyg.You can easily scale out Azure SQL databases using the Elastic Database tools. Dessa verktyg och funktioner kan du använda databasresurser av Azure SQL Database att skapa lösningar för transaktionell arbetsbelastningar och särskilt programvara som en tjänst (SaaS)-program.These tools and features let you use the database resources of Azure SQL Database to create solutions for transactional workloads, and especially Software as a Service (SaaS) applications. Elastiska databasfunktioner består av den:Elastic Database features are composed of the:

Följande bild visar en arkitektur som innehåller den elastiska databasfunktioner i förhållande till en samling av databaser.The following graphic shows an architecture that includes the Elastic Database features in relation to a collection of databases.

I den här bilden representerar färgerna i databasen scheman.In this graphic, colors of the database represent schemas. Databaser med samma färg delar samma schema.Databases with the same color share the same schema.

  1. En uppsättning Azure SQL-databaser finns på Azure med hjälp av arkitekturen för horisontell partitionering.A set of Azure SQL databases are hosted on Azure using sharding architecture.
  2. Den klientbibliotek för elastisk databas används för att hantera Fragmentera.The Elastic Database client library is used to manage a shard set.
  3. En delmängd av databaserna som placeras i en elastisk pool.A subset of the databases are put into an elastic pool. (Se vad är en pool?).(See What is a pool?).
  4. En elastisk databas jobbet körs schemalagda eller ad hoc-T-SQL-skript mot alla databaser.An Elastic Database job runs scheduled or ad hoc T-SQL scripts against all databases.
  5. Den för delade sökvägssammanslagning används för att flytta data från en Fragmentera till en annan.The split-merge tool is used to move data from one shard to another.
  6. Den elastisk databasfrågan gör att du kan skriva en fråga som omfattar alla databaser i uppsättningen Fragmentera.The Elastic Database query allows you to write a query that spans all databases in the shard set.
  7. Elastisk transaktioner gör att du kan köra transaktioner som sträcker sig över flera databaser.Elastic transactions allow you to run transactions that span several databases.

Elastic Database-verktyg

Varför använda verktygen?Why use the tools?

Uppnå elasticitet och skala för molnprogram har enkla för virtuella datorer och blob-lagring – helt enkelt lägga till eller subtrahera enheter, eller öka power.Achieving elasticity and scale for cloud applications has been straightforward for VMs and blob storage - simply add or subtract units, or increase power. Men det har varit en utmaning för tillståndskänsliga databearbetning i relationsdatabaser.But it has remained a challenge for stateful data processing in relational databases. Det här utmaningarna i följande scenarier:Challenges emerged in these scenarios:

  • Växande och minska kapacitet för relationsdatabas en del av din arbetsbelastning.Growing and shrinking capacity for the relational database part of your workload.
  • Hantera anslutningar som kan uppstå som påverkar en delmängd av data -, till exempel en upptagen end-kund (klient).Managing hotspots that may arise affecting a specific subset of data - such as a busy end-customer (tenant).

Traditionellt berörs scenarier som dessa av investera i större skala databasservrar att programmet.Traditionally, scenarios like these have been addressed by investing in larger-scale database servers to support the application. Det här alternativet är dock begränsad i molnet där all bearbetning som händer på fördefinierade vanlig hårdvara.However, this option is limited in the cloud where all processing happens on predefined commodity hardware. Distribuera data och bearbeta över flera identiskt strukturerade databaser i stället tillhandahåller ett alternativ till traditionella metoder skala upp både vad gäller kostnad och elasticitet (en skalbar mönstret kallas ”delning”).Instead, distributing data and processing across many identically structured databases (a scale-out pattern known as "sharding") provides an alternative to traditional scale-up approaches both in terms of cost and elasticity.

Vågräta och lodräta skalningHorizontal and vertical scaling

Följande bild visar vågräta och lodräta dimensioner för skalning, som de olika sätt som de elastiska databaserna kan skalas.The following figure shows the horizontal and vertical dimensions of scaling, which are the basic ways the elastic databases can be scaled.

Vågräta och lodräta skala ut

Teckenbredden avser att lägga till eller ta bort databaser för att justera kapacitet eller övergripande prestanda.Horizontal scaling refers to adding or removing databases in order to adjust capacity or overall performance. Detta kallas även ”skalning”.This is also called “scaling out”. Horisontell partitionering, där data är partitionerad över en mängd identiskt strukturerade databaser är ett vanligt sätt att implementera teckenbredden.Sharding, in which data is partitioned across a collection of identically structured databases, is a common way to implement horizontal scaling.

Lodrät skalning refererar till öka eller minska prestandanivåerna för en individuell databas – kallas även ”skala upp”.Vertical scaling refers to increasing or decreasing the performance level of an individual database—this is also known as “scaling up.”

De flesta databasprogram i molnskala använda en kombination av följande två metoder.Most cloud-scale database applications use a combination of these two strategies. En programvara som en tjänst kan till exempel använda teckenbredden för att etablera nya end-kunder och lodrät skalning så att varje end-kund databas kan öka eller minska resurser som krävs av arbetsbelastningen.For example, a Software as a Service application may use horizontal scaling to provision new end-customers and vertical scaling to allow each end-customer’s database to grow or shrink resources as needed by the workload.

  • Teckenbredden hanteras med hjälp av den klientbibliotek för elastisk databas.Horizontal scaling is managed using the Elastic Database client library.
  • Lodrät skalning åstadkoms med hjälp av Azure PowerShell-cmdlets för att ändra tjänstnivån, eller placera databaser i en elastisk pool.Vertical scaling is accomplished using Azure PowerShell cmdlets to change the service tier, or by placing databases in an elastic pool.

Horisontell partitioneringSharding

Horisontell partitionering är en teknik som du distribuerar stora mängder identiskt strukturerade data över ett antal oberoende databaser.Sharding is a technique to distribute large amounts of identically structured data across a number of independent databases. Det är särskilt populära med molnet utvecklare som skapar programvara som en tjänst (SAAS)-erbjudanden för slutanvändare och kunder eller företag.It is especially popular with cloud developers creating Software as a Service (SAAS) offerings for end customers or businesses. Dessa slutkunder kallas ofta ”innehavare”.These end customers are often referred to as “tenants”. Horisontell partitionering kan krävas av olika orsaker:Sharding may be required for any number of reasons:

  • Den totala mängden data är för stort för att rymmas inom begränsningarna för en enskild databasThe total amount of data is too large to fit within the constraints of a single database
  • Transaktionen genomströmning av övergripande belastningen överskrider kapaciteterna för en enskild databasThe transaction throughput of the overall workload exceeds the capabilities of a single database
  • Klienter kan kräva fysiska isolerade från varandra, så separata databaser krävs för varje klientTenants may require physical isolation from each other, so separate databases are needed for each tenant
  • Olika avsnitt i en databas behöver finnas i olika geografiska områden för kompatibilitet, prestanda eller geopolitiska orsaker.Different sections of a database may need to reside in different geographies for compliance, performance, or geopolitical reasons.

I andra scenarier, till exempel införandet av data från distribuerade enheter kan delning användas för att fylla en uppsättning databaser som är ordnade närvarande.In other scenarios, such as ingestion of data from distributed devices, sharding can be used to fill a set of databases that are organized temporally. En separat databas kan till exempel vara dedikerade till varje dag och vecka.For example, a separate database can be dedicated to each day or week. I så fall horisontell partitionering nyckeln kan vara ett heltal som representerar den (finns i alla rader i tabellerna delat) och frågor som hämtar information för ett datum måste dirigeras av programmet till delmängden av databaser som täcker intervallet i fråga.In that case, the sharding key can be an integer representing the date (present in all rows of the sharded tables) and queries retrieving information for a date range must be routed by the application to the subset of databases covering the range in question.

Delning fungerar bäst när varje transaktion i ett program kan vara begränsad till ett värde för en nyckel för horisontell partitionering.Sharding works best when every transaction in an application can be restricted to a single value of a sharding key. Detta säkerställer att alla transaktioner är lokala för en viss databas.That ensures that all transactions are local to a specific database.

Flera innehavare och single-klientMulti-tenant and single-tenant

Vissa program använder det enklaste sättet att skapa en separat databas för varje klient.Some applications use the simplest approach of creating a separate database for each tenant. Det här är den mönster för enstaka klient horisontell partitionering som ger isolering, möjlighet för säkerhetskopiering/återställning och resurs skalning på Granulariteten för innehavaren.This is the single tenant sharding pattern that provides isolation, backup/restore ability, and resource scaling at the granularity of the tenant. Varje databas är kopplad till en viss klient ID-värde (eller kunden nyckelvärde) med enda innehavare delning, men nyckeln behöver inte alltid finns i själva informationen.With single tenant sharding, each database is associated with a specific tenant ID value (or customer key value), but that key need not always be present in the data itself. Det är programmets ansvar för att dirigera varje förfrågan till rätt databas - och klientbiblioteket kan förenkla detta.It is the application’s responsibility to route each request to the appropriate database - and the client library can simplify this.

En organisation jämfört med flera innehavare

Andra scenarier packa ihop flera innehavare i databaser i stället för att isolera dem i separata databaser.Others scenarios pack multiple tenants together into databases, rather than isolating them into separate databases. Det här är en typisk mönster för flera innehavare horisontell partitionering - och den styrs av det faktum att ett program hanterar stora mängder små innehavare.This is a typical multi-tenant sharding pattern - and it may be driven by the fact that an application manages large numbers of small tenants. I flera innehavare delning är raderna i databastabellerna alla utformade för att utföra en nyckel som identifierar de klient-ID eller en nyckel för horisontell partitionering.In multi-tenant sharding, the rows in the database tables are all designed to carry a key identifying the tenant ID or sharding key. Återigen nivån programmet ansvarar för omdirigering av en klient-begäran till rätt databas och det stöds av klientbiblioteket för elastisk databas.Again, the application tier is responsible for routing a tenant’s request to the appropriate database, and this can be supported by the elastic database client library. Dessutom säkerhet på radnivå kan användas för att filtrera vilka rader som varje klient kan komma åt - mer information finns i program med flera klienter med elastiska Databasverktyg och säkerhet på radnivå.In addition, row-level security can be used to filter which rows each tenant can access - for details, see Multi-tenant applications with elastic database tools and row-level security. Distribuera data mellan databaser kan behövas med flera innehavare horisontell partitionering mönster och detta möjliggörs med hjälp av verktyget för elastisk databas delade dokument.Redistributing data among databases may be needed with the multi-tenant sharding pattern, and this is facilitated by the elastic database split-merge tool. 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.To learn more about design patterns for SaaS applications using elastic pools, see Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database.

Flytta data från flera till single-innehavare databaserMove data from multiple to single-tenancy databases

När du skapar ett SaaS-program, är det vanligt att erbjuda en utvärderingsversion av programvaran för potentiella kunder.When creating a SaaS application, it is typical to offer prospective customers a trial version of the software. I det här fallet är det kostnadseffektivt att använda en databas med flera innehavare för data.In this case, it is cost-effective to use a multi-tenant database for the data. När en potentiell kund blir en kund, är en enskild klient-databas dock bättre eftersom det ger bättre prestanda.However, when a prospect becomes a customer, a single-tenant database is better since it provides better performance. Om kunden har skapat data under utvärderingsperioden, använder du den för delade sökvägssammanslagning att flytta data från flera innehavare till den nya databasen för en klient.If the customer had created data during the trial period, use the split-merge tool to move the data from the multi-tenant to the new single-tenant database.

Nästa stegNext steps

En exempelapp som visar klientbiblioteket finns Kom igång med elastiska Databasverktyg.For a sample app that demonstrates the client library, see Get started with Elastic Database tools.

Om du vill konvertera befintliga databaser för att använda verktygen finns migrera befintliga databaser att skala ut.To convert existing databases to use the tools, see Migrate existing databases to scale out.

Egenskaperna för den elastiska poolen finns pris- och prestandaöverväganden för en elastisk pool, eller skapa en ny pool med elastiska pooler.To see the specifics of the elastic pool, see Price and performance considerations for an elastic pool, or create a new pool with elastic pools.

Ytterligare resurserAdditional resources

Ännu inte använder elastisk Databasverktyg?Not using elastic database tools yet? Kolla in våra komma igång.Check out our Getting Started Guide. För frågor kan du nå oss på den SQL Database-forum och för funktionsbegäranden, Lägg till dem till den SQL-databas Feedbackforum.For questions, please reach out to us on the SQL Database forum and for feature requests, please add them to the SQL Database feedback forum.