Uitbreiden met Azure SQL Database

VAN TOEPASSING OP: Azure SQL Database

U kunt databases in een database eenvoudig uitschalen Azure SQL Database de Elastische database hulpprogramma's. Met deze hulpprogramma's en functies kunt u de databasebronnen van Azure SQL Database gebruiken om oplossingen te maken voor transactionele workloads, en met name SaaS-toepassingen (Software as a Service). Elastische database bestaan uit de volgende functies:

  • Elastische database clientbibliotheek:de clientbibliotheek is een functie waarmee u shard-databases kunt maken en onderhouden. Zie Get started with Elastische database tools (Aan de slag Elastische database hulpprogramma's).
  • Elastische database split-merge tool:verplaatst gegevens tussen shard-databases. Dit hulpprogramma is handig voor het verplaatsen van gegevens van een database met meerdere tenants naar een database met één tenant (of vice versa). Zie de zelfstudie elastic database Split-Merge tool.
  • Elastische database taken (preview): gebruik taken voor het beheren van grote aantallen databases in Azure SQL Database. Voer eenvoudig beheerbewerkingen uit, zoals schemawijzigingen, referentiebeheer, updates van referentiegegevens, het verzamelen van prestatiegegevens of het verzamelen van tenant-telemetriegegevens (klant) met behulp van taken.
  • Elastische database query (preview): hiermee kunt u een Transact-SQL-query uitvoeren die meerdere databases omvat. Hiermee kunt u verbinding maken met rapportagehulpprogramma's zoals Excel, Power BI, Tableau, enzovoort.
  • Elastische transacties:met deze functie kunt u transacties uitvoeren die meerdere databases bespannen. Elastische databasetransacties zijn beschikbaar voor .NET-toepassingen die gebruikmaken van ADO .NET en integreren met de vertrouwde programmeerervaring met behulp van de System.Transaction-klassen.

In de volgende afbeelding ziet u een architectuur met de Elastische database in relatie tot een verzameling databases.

In deze afbeelding vertegenwoordigen kleuren van de database schema's. Databases met dezelfde kleur delen hetzelfde schema.

  1. Een set SQL-databases wordt gehost in Azure met behulp van sharding-architectuur.
  2. De Elastische database-clientbibliotheek wordt gebruikt voor het beheren van een shardset.
  3. Een subset van de databases wordt in een elastische pool opgenomen. (Zie Wat is een pool?).
  4. Een Elastische database taak voert geplande of ad-hoc T-SQL-scripts uit op alle databases.
  5. Het hulpprogramma split-merge wordt gebruikt om gegevens van de ene shard naar de andere te verplaatsen.
  6. Met Elastische database query kunt u een query schrijven die alle databases in de shardset omvat.
  7. Met elastische transacties kunt u transacties uitvoeren die meerdere databases bespannen.

Hulpprogramma's voor elastische databases

Waarom de hulpprogramma's gebruiken?

Het bereiken van elasticiteit en schaalbaarheid voor cloudtoepassingen is heel eenvoudig voor VM's en blob-opslag. U hoeft alleen maar eenheden op te nemen of af te trekken of het vermogen te vergroten. Maar het is een uitdaging gebleven voor stateful gegevensverwerking in relationele databases. Er zijn uitdagingen ontstaan in deze scenario's:

  • Capaciteit voor het relationele databasegedeelte van uw workload vergroten en verkleinen.
  • Het beheren van hotspots die zich kunnen voordoen, is van invloed op een specifieke subset van gegevens, zoals een bezette eindklant (tenant).

Van oudsher worden dergelijke scenario's aangepakt door te investeren in grootschalige servers ter ondersteuning van de toepassing. Deze optie is echter beperkt in de cloud waar alle verwerking op vooraf gedefinieerde basishardware gebeurt. In plaats daarvan biedt het distribueren van gegevens en verwerking over veel identiek gestructureerde databases (een uitschaalpatroon dat 'sharding' wordt genoemd) een alternatief voor traditionele benaderingen voor opschalen, zowel op het gebied van kosten als elasticiteit.

Horizontaal en verticaal schalen

In de volgende afbeelding ziet u de horizontale en verticale dimensies van schalen. Dit zijn de basis manieren waarop de elastische databases kunnen worden geschaald.

Horizontaal versus verticaal uitschalen

Horizontaal schalen verwijst naar het toevoegen of verwijderen van databases om de capaciteit of algehele prestaties aan te passen, ook wel uitschalen genoemd. Sharding, waarbij gegevens worden gepart partitioneerd over een verzameling identiek gestructureerde databases, is een veelgebruikte manier om horizontaal schalen te implementeren.

Verticaal schalen verwijst naar het vergroten of verlagen van de rekenkracht van een afzonderlijke database, ook wel bekend als omhoog schalen.

De meeste clouddatabasetoepassingen gebruiken een combinatie van deze twee strategieën. Een Software as a Service-toepassing kan bijvoorbeeld horizontaal schalen gebruiken om nieuwe eindklanten en verticale schaalbaarheid in terichten, zodat de database van elke eindklant naar behoefte door de workload kan worden geschaald of verkleind.

  • Horizontaal schalen wordt beheerd met behulp Elastische database clientbibliotheek.
  • Verticaal schalen wordt bereikt met behulp Azure PowerShell cmdlets om de servicelaag te wijzigen of door databases in een elastische pool te plaatsen.

Sharding

Sharding is een techniek voor het distribueren van grote hoeveelheden identiek gestructureerde gegevens over een aantal onafhankelijke databases. Het is vooral populair bij cloudontwikkelaars die SAAS-aanbiedingen (Software as a Service) maken voor eindklanten of bedrijven. Deze eindklanten worden vaak aangeduid als 'tenants'. Sharding kan om een aantal redenen vereist zijn:

  • De totale hoeveelheid gegevens is te groot om binnen de beperkingen van een afzonderlijke database te passen
  • De transactiedoorvoer van de algehele workload overschrijdt de mogelijkheden van een afzonderlijke database
  • Tenants vereisen mogelijk fysieke isolatie van elkaar, dus er zijn afzonderlijke databases nodig voor elke tenant
  • Om nalevings-, prestatie- of geopolitieke redenen moeten verschillende secties van een database zich mogelijk in verschillende geografische gebieden bevinden.

In andere scenario's, zoals de opname van gegevens van gedistribueerde apparaten, kan sharding worden gebruikt om een set databases te vullen die tijdelijk zijn georganiseerd. Een afzonderlijke database kan bijvoorbeeld worden toegewezen aan elke dag of week. In dat geval kan de sharding-sleutel een geheel getal zijn dat de datum vertegenwoordigt (aanwezig in alle rijen van de shard-tabellen) en moeten query's voor het ophalen van informatie voor een datumbereik door de toepassing worden doorgeleid naar de subset van databases die betrekking hebben op het betreffende bereik.

Sharding werkt het beste wanneer elke transactie in een toepassing kan worden beperkt tot één waarde van een shardingsleutel. Dit zorgt ervoor dat alle transacties lokaal zijn voor een specifieke database.

Meerdere tenants en één tenant

Sommige toepassingen gebruiken de eenvoudigste methode voor het maken van een afzonderlijke database voor elke tenant. Deze aanpak is het sharding-patroon voor één tenant dat isolatie, back-up-/herstelcapaciteit en schaalbaarheid van resources biedt op de granulariteit van de tenant. Bij sharding met één tenant is elke database gekoppeld aan een specifieke tenant-id-waarde (of klantsleutelwaarde), maar die sleutel hoeft niet altijd aanwezig te zijn in de gegevens zelf. Het is de verantwoordelijkheid van de toepassing om elke aanvraag naar de juiste database te sturen. De clientbibliotheek kan dit vereenvoudigen.

Eén tenant versus meerdere tenants

Andere scenario's bevatten meerdere tenants in databases, in plaats van ze te isoleren in afzonderlijke databases. Dit patroon is een typisch shardingpatroon voor meerdere tenants. Dit kan worden aangestuurd door het feit dat een toepassing grote aantallen kleine tenants beheert. Bij sharding met meerdere tenants zijn de rijen in de databasetabellen allemaal ontworpen voor het uitvoeren van een sleutel die de tenant-id of shardingsleutel identificeert. Ook hier is de toepassingslaag verantwoordelijk voor het routeren van de aanvraag van een tenant naar de juiste database. Dit kan worden ondersteund door de clientbibliotheek van de elastische database. Bovendien kan beveiliging op rijniveau worden gebruikt om te filteren tot welke rijen elke tenant toegang heeft. Zie Multi-tenant-toepassingen met elastische databasehulpprogramma's en beveiliging op rijniveau voor meer informatie. Het herdistribueren van gegevens over databases kan nodig zijn met het multiten tenant sharding-patroon en wordt mogelijk gemaakt door het hulpprogramma voor splitsen en samenvoegen van elastische databases. Zie Ontwerppatronen voor SaaS-toepassingen met meerdere tenants met behulp van Azure SQL Database voor meer informatie over ontwerppatronen voor SaaS-toepassingen met elastische pools.

Gegevens verplaatsen van meerdere databases naar databases met één tenancy

Bij het maken van een SaaS-toepassing is het gebruikelijk om potentiële klanten een proefversie van de software te bieden. In dit geval is het voordelig om een database met meerdere tenants te gebruiken voor de gegevens. Wanneer een prospect echter een klant wordt, is een database met één tenant beter omdat deze betere prestaties biedt. Als de klant gegevens heeft gemaakt tijdens de proefperiode, gebruikt u het hulpprogramma voor splitsen en samenvoegen om de gegevens te verplaatsen van de multiten tenant naar de nieuwe database met één tenant.

Volgende stappen

Zie Aan de slag met de hulpprogramma's voor een voorbeeld-app die de clientbibliotheek Elastische database gedemonstreerd.

Zie Bestaande databases migreren om uit te schalen als u bestaande databases wilt converteren voor het gebruik van de hulpprogramma's.

Zie Prijs- en prestatieoverwegingen voor een elastische poolof maak een nieuwe pool met elastische pools voor de details van de elastische pool.

Aanvullende resources

Gebruikt u nog geen hulpprogramma's voor elastische databases? Bekijk de handleiding Aan de slag. Voor vragen kunt u contact met ons opnemen op de Microsoft Q&A question page for SQL Database en voor functieaanvragen kunt u nieuwe ideeën toevoegen of stemmen op bestaande ideeën in het feedbackforum voor SQL Database.