Uitbreiden met Azure SQL Database
Van toepassing op: Azure SQL-database
U kunt databases eenvoudig uitschalen in Azure SQL Database met behulp van de hulpmiddelen voor elastische databases. Met deze hulpprogramma's en functies kunt u de databasebronnen van Azure SQL Database gebruiken om oplossingen te maken voor transactionele workloads, met name SaaS-toepassingen (Software as a Service). Elastic Database-functies bestaan uit:
- Elastic Database-clientbibliotheek: de clientbibliotheek is een functie waarmee u shard-databases kunt maken en onderhouden. Zie Aan de slag met elastic database-hulpprogramma's.
- Hulpprogramma voor splitsen en samenvoegen van elastische databases: gegevens tussen sharddatabases verplaatsen. Dit hulpprogramma is handig voor het verplaatsen van gegevens van een database met meerdere tenants naar een database met één tenant (of omgekeerd). Zie de zelfstudie Split-Merge hulpprogramma voor Elastic Database.
- Elastische databasetaken (preview): Gebruik taken om grote aantallen databases in Azure SQL Database te beheren. Voer eenvoudig beheerbewerkingen uit, zoals schemawijzigingen, referentiegegevensbeheer, updates van referentiegegevens, het verzamelen van prestatiegegevens of het verzamelen van tenanttelemetriegegevens (klant) met behulp van taken.
- Elastic 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 omvatten. Transacties voor elastische databases zijn beschikbaar voor .NET-toepassingen met behulp van ADO .NET en kunnen worden geïntegreerd met de vertrouwde programmeerervaring met behulp van de System.Transaction-klassen.
In de volgende afbeelding ziet u een architectuur die de functies van Elastic Database bevat ten opzichte van een verzameling databases.
In deze afbeelding vertegenwoordigen kleuren van de database schema's. Databases met dezelfde kleur delen hetzelfde schema.
- Een set SQL-databases wordt gehost in Azure met behulp van sharding-architectuur.
- De Elastic Database-clientbibliotheek wordt gebruikt voor het beheren van een shardset.
- Een subset van de databases wordt in een elastische pool geplaatst. (Zie Wat is een zwembad?).
- Een Elastic Database-taak voert geplande of ad-hoc T-SQL-scripts uit voor alle databases.
- Het hulpprogramma voor splitsen en samenvoegen wordt gebruikt om gegevens van de ene shard naar de andere te verplaatsen.
- Met de elastische databasequery kunt u een query schrijven die alle databases in de shardset omvat.
- Met elastische transacties kunt u transacties uitvoeren die meerdere databases omvatten.
Waarom de hulpprogramma's gebruiken?
Het bereiken van elasticiteit en schaal voor cloudtoepassingen is eenvoudig voor VM's en blobopslag: voeg eenvoudig eenheden toe of trek ze af of vergroot de kracht. Maar het is een uitdaging gebleven voor stateful gegevensverwerking in relationele databases. In deze scenario's zijn uitdagingen opgetreden:
- De capaciteit voor het relationele databasegedeelte van uw workload vergroten en verkleinen.
- Het beheren van hotspots die zich kunnen voordoen die van invloed kunnen zijn op een specifieke subset van gegevens, zoals een drukke eindklant (tenant).
Normaal gesproken zijn scenario's zoals deze aangepakt door te investeren in servers op grotere schaal om de toepassing te ondersteunen. Deze optie is echter beperkt in de cloud waar alle verwerking plaatsvindt op vooraf gedefinieerde basishardware. In plaats daarvan biedt het distribueren van gegevens en verwerking in veel identiek gestructureerde databases (een uitschaalpatroon dat bekend staat als 'sharding') een alternatief voor traditionele schaalaanpassingsmethoden, zowel wat kosten als elasticiteit betreft.
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 schalen verwijst naar het toevoegen of verwijderen van databases om de capaciteit of algehele prestaties aan te passen, ook wel 'uitschalen' genoemd. Sharding, waarin gegevens worden gepartitioneerd in een verzameling identieke gestructureerde databases, is een veelgebruikte manier om horizontaal schalen te implementeren.
Verticaal schalen verwijst naar het vergroten of verkleinen van de rekenkracht van een afzonderlijke database, ook wel 'omhoog schalen' genoemd.
De meeste databasetoepassingen in de cloud maken gebruik van een combinatie van deze twee strategieën. Een Software as a Service-toepassing kan bijvoorbeeld horizontaal schalen gebruiken om nieuwe eindklanten en verticale schaalaanpassing in te richten, zodat de database van elke eindgebruiker resources kan vergroten of verkleinen als dat nodig is voor de workload.
- Horizontaal schalen wordt beheerd met behulp van de Elastic Database-clientbibliotheek.
- Verticaal schalen wordt bereikt met behulp van 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 eindgebruikers of bedrijven. Deze eindklanten worden vaak 'tenants' genoemd. Sharding kan om verschillende redenen vereist zijn:
- De totale hoeveelheid gegevens is te groot om binnen de beperkingen van een afzonderlijke database te passen
- De transactiedoorvoer van de totale workload overschrijdt de mogelijkheden van een afzonderlijke database
- Tenants vereisen mogelijk fysieke isolatie van elkaar, dus er zijn afzonderlijke databases nodig voor elke tenant
- Verschillende secties van een database moeten zich mogelijk in verschillende geografische gebieden bevinden om naleving, prestaties of geopolitieke redenen.
In andere scenario's, zoals het opnemen van gegevens van gedistribueerde apparaten, kan sharding worden gebruikt om een set databases op te vullen die tijdelijk zijn georganiseerd. Een afzonderlijke database kan bijvoorbeeld worden toegewezen aan elke dag of week. In dat geval kan de shardingsleutel een geheel getal zijn dat de datum aangeeft (aanwezig in alle rijen van de shard-tabellen) en query's die informatie ophalen voor een datumbereik, moeten door de toepassing worden doorgestuurd 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 sharding-sleutel. Dit zorgt ervoor dat alle transacties lokaal zijn voor een specifieke database.
Meerdere tenants en één tenant
Sommige toepassingen gebruiken de eenvoudigste benadering van het maken van een afzonderlijke database voor elke tenant. Deze benadering is het shardingpatroon van één tenant dat isolatie, mogelijkheid voor back-up/herstel en schaalaanpassing van resources biedt op de granulariteit van de tenant. Bij sharding met één tenant wordt 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 routeren. De clientbibliotheek kan dit vereenvoudigen.
Andere scenario's verpakken 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 bepaald door het feit dat een toepassing grote aantallen kleine tenants beheert. Bij sharding met meerdere tenants zijn de rijen in de databasetabellen allemaal ontworpen om een sleutel te dragen 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. Daarnaast kan beveiliging op rijniveau worden gebruikt om te filteren welke rijen elke tenant kan openen. Zie multitenant-toepassingen met hulpmiddelen voor elastische databases en beveiliging op rijniveau voor meer informatie. Het opnieuw distribueren van gegevens tussen databases kan nodig zijn met het shardingpatroon voor meerdere tenants en wordt mogelijk vergemakkelijkt 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 naar databases met één tenancy
Bij het maken van een SaaS-toepassing is het gebruikelijk om potentiële klanten een proefversie van de software aan te bieden. In dit geval is het rendabel 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 had gemaakt tijdens de proefperiode, gebruikt u het hulpprogramma voor splitsen en samenvoegen om de gegevens van de multitenant te verplaatsen naar de nieuwe database met één tenant.
Volgende stappen
Zie Aan de slag met elastic database-hulpprogramma's voor een voorbeeld-app die de clientbibliotheek laat zien.
Als u bestaande databases wilt converteren om de hulpprogramma's te gebruiken, raadpleegt u Bestaande databases migreren om uit te schalen.
Zie Prijs- en prestatieoverwegingen voor een elastische pool of maak een nieuwe pool met elastische pools als u de details van de elastische pool wilt bekijken.
Aanvullende resources
Gebruikt u nog geen hulpprogramma's voor elastische databases? Bekijk de handleiding Aan de slag. Neem voor vragen contact met ons op op de microsoft Q&A-vragenpagina voor SQL Database en voor functieaanvragen, voeg nieuwe ideeën toe of stem op bestaande ideeën in het SQL Database feedbackforum.