Delen via


Overzicht van elastische query's in Azure SQL Database (preview)

van toepassing op:Azure SQL Database-

Met de functie voor elastische query's (in preview) kunt u een Transact-SQL (T-SQL)-query uitvoeren die meerdere databases in Azure SQL Database omvat. Hiermee kunt u query's tussen databases uitvoeren om toegang te krijgen tot externe tabellen en om hulpprogramma's van Microsoft en derden (Excel, Power BI, Tableau, enzovoort) te verbinden om query's uit te voeren op gegevenslagen met meerdere databases. Met deze functie kunt u query's uitschalen naar grote gegevenslagen en de resultaten visualiseren in BI-rapporten (Business Intelligence).

Waarom elastische query's gebruiken

Azure SQL Database

Query's uitvoeren op databases in Azure SQL Database volledig in T-SQL. Hierdoor kunnen er alleen-lezen query's worden uitgevoerd op externe databases en hebben huidige SQL Server-klanten de mogelijkheid om toepassingen te migreren die gebruikmaken van drie- en vierdelige namen of een gekoppelde server naar SQL Database.

Beschikbaar voor alle servicelagen

Elastische query wordt ondersteund in alle servicelagen van Azure SQL Database. Zie de sectie over preview-beperkingen hieronder over prestatiebeperkingen voor lagere servicelagen.

Parameters pushen naar externe databases

Elastische query's kunnen nu SQL-parameters pushen naar de externe databases voor uitvoering.

Uitvoering van opgeslagen procedure

Voer externe opgeslagen procedure-aanroepen of externe functies uit met behulp van sp_execute _remote.

Flexibiliteit

Externe tabellen met elastische query's kunnen verwijzen naar externe tabellen met een andere schema- of tabelnaam.

Scenarios voor elastische queries

Het doel is om queryscenario's te vergemakkelijken waarbij meerdere databases rijen bijdragen aan één algemeen resultaat. De query kan rechtstreeks door de gebruiker of toepassing worden samengesteld, of indirect via hulpprogramma's die zijn verbonden met de database. Dit is vooral handig bij het maken van rapporten, het gebruik van commerciële BI- of hulpprogramma's voor gegevensintegratie of toepassingen die niet kunnen worden gewijzigd. Met een elastische query kunt u query's uitvoeren op verschillende databases met behulp van de vertrouwde SQL Server-connectiviteitservaring in hulpprogramma's zoals Excel, Power BI, Tableau of Cognos. Met een elastische query hebt u eenvoudig toegang tot een volledige verzameling databases via query's die zijn uitgegeven door SQL Server Management Studio of Visual Studio, en kunt u query's uitvoeren op meerdere databases vanuit Entity Framework of andere ORM-omgevingen. In afbeelding 1 ziet u een scenario waarin een bestaande cloudtoepassing (die gebruikmaakt van de clientbibliotheek voor elastische databases) voortbouwt op een uitgeschaalde gegevenslaag en een elastische query wordt gebruikt voor rapportage tussen databases.

afbeelding 1 Elastische query die wordt gebruikt voor geschaalde gegevenslaag

Schermafbeelding van Elastic-query gebruikt in de geschaalde gegevenslaag.

Klantscenario's voor elastische query's worden gekenmerkt door de volgende topologieën:

  • Verticale partitionering: query's voor meerdere databases (topologie 1): de gegevens worden verticaal gepartitioneerd tussen verschillende databases in een gegevenslaag. Normaal gesproken bevinden verschillende sets tabellen zich in verschillende databases. Dit betekent dat het schema verschilt van verschillende databases. Alle tabellen voor inventaris bevinden zich bijvoorbeeld in één database, terwijl alle tabellen met betrekking tot boekhouding zich in een tweede database bevinden. Voor veelvoorkomende gebruiksvoorbeelden met deze topologie moet u een query uitvoeren op meerdere tabellen of rapporten in verschillende databases compileren.

  • Horizontale partitionering: sharding (topologie 2): gegevens worden horizontaal gepartitioneerd om rijen over een uitgeschaalde gegevenslaag te verdelen. Met deze benadering is het schema identiek voor alle deelnemende databases. Deze methode wordt ook wel shardinggenoemd. Sharding kan worden uitgevoerd en beheerd met behulp van (1) de bibliotheken voor elastische databasehulpprogramma's of (2) eigen sharding. Een elastische query wordt gebruikt voor het opvragen of compileren van rapporten in veel shards. Shards zijn doorgaans databases in een elastische pool. U kunt elastische query's zien als een efficiënte manier om in één keer query's uit te voeren op alle databases van een elastische pool, zolang databases het algemene schema delen.

Notitie

Elastische query werkt het beste voor rapportagescenario's waarbij de meeste verwerking (filteren, aggregatie) aan de externe bronzijde kan worden uitgevoerd. Het is niet geschikt voor ETL-bewerkingen waarbij grote hoeveelheden gegevens worden overgedragen vanuit externe databases. Voor intensieve rapportagetaken of datawarehousing scenario's met complexere query's kunt u ook overwegen om Azure Synapse Analyticste gebruiken.

Verticale partitionering - query's voor meerdere databases

Zie Aan de slag met query's voor meerdere databases (verticale partitionering)om te beginnen met coderen.

Een elastische query kan worden gebruikt om gegevens in een database in SQL Database beschikbaar te maken voor andere databases in SQL Database. Hierdoor kunnen query's uit de ene database verwijzen naar tabellen in een andere externe database in SQL Database. De eerste stap is het definiëren van een externe gegevensbron voor elke externe database. De externe gegevensbron wordt gedefinieerd in de lokale database waaruit u toegang wilt krijgen tot tabellen die zich in de externe database bevinden. Er zijn geen wijzigingen nodig in de externe database. Voor typische scenario's voor verticale partitionering waarbij verschillende databases verschillende schema's hebben, kunnen elastische query's worden gebruikt om algemene gebruiksvoorbeelden te implementeren, zoals toegang tot referentiegegevens en query's voor meerdere databases.

Belangrijk

U moet over ALTER ANY EXTERNAL DATA SOURCE toestemming beschikken. Deze machtiging is opgenomen in de ALTER DATABASE machtiging. Om te verwijzen naar de onderliggende gegevensbron zijn ALTER ANY EXTERNAL DATA SOURCE machtigingen nodig.

Referentiegegevens: de topologie wordt gebruikt voor referentiegegevensbeheer. In de volgende afbeelding worden twee tabellen (T1 en T2) met referentiegegevens bewaard in een toegewezen database. Met behulp van een elastische query hebt u nu toegang tot tabellen T1 en T2 op afstand vanuit andere databases, zoals wordt weergegeven in de afbeelding. Gebruik topologie 1 als de referentietabellen klein zijn of als externe queries naar de referentietabel selectieve predicaten hebben.

Afbeelding 2 Verticale partitionering - "Elastische query" gebruiken om referentiegegevens op te vragen

schermopname van verticale partitionering: elastische query gebruiken om referentiegegevens op te vragen.

query's uitvoeren op meerdere databases: Elastische query's maken gebruiksvoorbeelden mogelijk waarvoor query's moeten worden uitgevoerd in verschillende databases in SQL Database. In afbeelding 3 ziet u vier verschillende databases: CRM, Inventaris, HR en Producten. Query's die in een van de databases worden uitgevoerd, hebben ook toegang nodig tot een of alle andere databases. Met behulp van een elastische query kunt u uw database voor dit geval configureren door een paar eenvoudige DDL-instructies uit te voeren op elk van de vier databases. Na deze eenmalige configuratie is de toegang tot een externe tabel net zo eenvoudig als het verwijzen naar een lokale tabel vanuit uw T-SQL-query's of vanuit uw BI-hulpprogramma's. Deze methode wordt aanbevolen als de externe query's geen grote resultaten retourneren.

Afbeelding 3 Verticale partitionering - Elastic Query gebruiken om query's uit te voeren op verschillende databases

Schermopname van verticale partitionering: elastische query gebruiken om query's uit te voeren op verschillende databases.

Met de volgende stappen configureert u query's voor elastische databases voor verticale partitioneringsscenario's waarvoor toegang tot een tabel in externe databases in SQL Database met hetzelfde schema is vereist:

Nadat u de DDL-instructies hebt uitgevoerd, hebt u toegang tot de externe tabel mytable alsof het een lokale tabel was. Azure SQL Database opent automatisch een verbinding met de externe database, verwerkt uw aanvraag op de externe database en retourneert de resultaten.

Horizontale partitionering - sharding

Het gebruik van een elastische query om rapportagetaken uit te voeren op een geshardde gegevenslaag, dat wil zeggen horizontaal gepartitioneerd, vereist een elastische databasetabel om de databases van de gegevenslaag weer te geven. Normaal gesproken wordt in dit scenario slechts één shard-toewijzing gebruikt en fungeert een toegewijde database met elastische querymogelijkheden (hoofdknooppunt) als toegangspunt voor queries naar rapporten. Alleen deze specifieke database heeft toegang nodig tot de shard map. Afbeelding 4 illustreert deze topologie en de configuratie daarvan met de elastische querydatabase en shardkaart. Zie voor meer informatie over de clientbibliotheek voor elastische databases en het maken van shard-kaarten Shard-kaartbeheer.

Afbeelding 4 Horizontale partitionering - elastische query gebruiken voor rapportage over geshardde gegevenslagen

Schermopname van horizontale partitionering - Het gebruik van een elastische query voor het rapporteren over geshardde gegevenslagen.

Notitie

De elastische querydatabase (hoofdknooppunt) kan een aparte database zijn of dezelfde database die als host fungeert voor de shard map. Ongeacht de configuratie die u kiest, moet u ervoor zorgen dat de servicelaag en de rekenkracht van die database hoog genoeg is om het verwachte aantal aanmeldings-/queryaanvragen af te handelen.

Met de volgende stappen configureert u query's voor elastische databases voor horizontale partitioneringsscenario's die toegang nodig hebben tot een set tabellen in (meestal) verschillende externe databases in SQL Database:

Nadat u deze stappen hebt uitgevoerd, hebt u toegang tot de horizontaal gepartitioneerde tabel mytable alsof het een lokale tabel was. Azure SQL Database opent automatisch meerdere parallelle verbindingen met de externe databases waar de tabellen fysiek worden opgeslagen, verwerkt de aanvragen op de externe databases en retourneert de resultaten. Meer informatie over de stappen die nodig zijn voor het horizontale partitioneringsscenario vindt u in elastische query voor horizontale partitionering.

Om te beginnen met coderen, zie Aan de slag met elastische query voor horizontale partitionering (sharding).

Belangrijk

Een geslaagde uitvoering van elastische query's ten opzichte van een grote set databases is sterk afhankelijk van de beschikbaarheid van elk van de databases tijdens de uitvoering van de query. Als een van de databases niet beschikbaar is, mislukt de hele query. Als u van plan bent om in één keer een query uit te voeren op honderden of duizenden databases, moet u ervoor zorgen dat uw clienttoepassing logica voor opnieuw proberen heeft ingesloten of overweeg om gebruik te maken van elastische taken en kleinere subsets van databases op te vragen, waarbij de resultaten van elke query worden samengevoegd tot één doel.

T-SQL-query's uitvoeren

Nadat u uw externe gegevensbronnen en uw externe tabellen hebt gedefinieerd, kunt u gewone SQL Server-verbindingsreeksen gebruiken om verbinding te maken met de databases waar u uw externe tabellen hebt gedefinieerd. U kunt vervolgens T-SQL-instructies uitvoeren voor uw externe tabellen voor die verbinding met de beperkingen die verderop in dit artikel worden beschreven. Meer informatie en voorbeelden van T-SQL-query's vindt u in de documentatieartikelen voor horizontale partitionering en verticale partitionering.

Connectiviteit voor hulpprogramma's

U kunt reguliere SQL Server-verbindingsreeksen gebruiken om uw toepassingen en BI- of hulpprogramma's voor gegevensintegratie te verbinden met databases met externe tabellen. Zorg ervoor dat SQL Server wordt ondersteund als een gegevensbron voor uw hulpprogramma. Als u verbinding hebt gemaakt, raadpleegt u de elastische querydatabase en de externe tabellen in die database, net zoals u dat zou doen met een andere SQL Server-database waarmee u verbinding maakt met uw hulpprogramma.

Belangrijk

Elastische query's worden alleen ondersteund bij het maken van verbinding met SQL Server-verificatie.

Kosten

Elastische query's zijn opgenomen in de kosten van Azure SQL Database. Topologieën waarbij uw externe databases zich in een ander datacenter bevinden dan het eindpunt voor elastische query's worden ondersteund, maar het uitgaand verkeer van externe databases wordt regelmatig in rekening gebracht Azure-tarieven.

Preview-beperkingen

  • Het uitvoeren van de eerste elastische query kan enkele minuten duren voor kleinere resources en de servicelagen Standard en General Purpose. Deze tijd is nodig om de functionaliteit voor elastische query's te laden; laadprestaties verbeteren met hogere servicelagen en rekenkracht.

  • Scripting van externe gegevensbronnen of externe tabellen van SSMS of SSDT wordt nog niet ondersteund.

  • Importeren/exporteren voor SQL Database biedt nog geen ondersteuning voor externe gegevensbronnen en externe tabellen. Als u Import/Export wilt gebruiken, zet u deze objecten neer voordat u deze exporteert en maakt u ze vervolgens opnieuw na het importeren.

  • Elastische query ondersteunt momenteel alleen-lezentoegang tot externe tabellen. U kunt echter volledige Transact-SQL-functionaliteit gebruiken in de database waarin de externe tabel is gedefinieerd. Dit kan handig zijn om bijvoorbeeld tijdelijke resultaten te behouden met bijvoorbeeld SELECT <column_list> INTO <local_table>of om opgeslagen procedures te definiëren in de elastische querydatabase die naar externe tabellen verwijzen.

  • Met uitzondering van nvarchar(max), worden LOB-typen (inclusief ruimtelijke typen) niet ondersteund in externe tabeldefinities. Als tijdelijke oplossing kunt u een weergave maken in de externe database waarmee het LOB-type wordt omgezet in nvarchar(max), uw externe tabel over de weergave definiëren in plaats van de basistabel en deze vervolgens weer naar het oorspronkelijke LOB-type in uw query's casten.

  • Kolommen van nvarchar(max) gegevenstype in resultatenset uitschakelen geavanceerde batchverwerkingstechnieken die worden gebruikt in de implementatie van Elastic Query en kunnen de prestaties van query's beïnvloeden voor een orde van grootte, of zelfs twee ordes van grootte in niet-canonieke gebruiksscenario's waarbij grote hoeveelheid niet-geaggregeerde gegevens worden overgedragen als gevolg van een query.

  • Kolomstatistieken voor externe tabellen worden momenteel niet ondersteund. Tabelstatistieken worden ondersteund, maar moeten handmatig worden gemaakt.

  • Cursors worden niet ondersteund voor externe tabellen in Azure SQL Database.

  • Elastische query werkt alleen met Azure SQL Database. U kunt deze niet gebruiken voor het uitvoeren van query's op een SQL Server-exemplaar.

  • Privékoppelingen worden momenteel niet ondersteund met elastische query's voor databases die doelen zijn van externe gegevensbronnen.