Wat is azure Synapse SQL-architectuur?
In dit artikel worden de architectuuronderdelen van Synapse SQL beschreven. Ook wordt uitgelegd hoe Azure Synapse SQL gedistribueerde queryverwerkingsmogelijkheden combineert met Azure Storage om hoge prestaties en schaalbaarheid te bereiken.
Synapse SQL-architectuuronderdelen
Synapse SQL maakt gebruik van een uitschaalarchitectuur om rekenkundige verwerking van gegevens over meerdere knooppunten te distribueren. De berekening staat los van de opslag, waarmee u de rekenkracht onafhankelijk van de gegevens in uw systeem kunt schalen.
Voor een toegewezen SQL-pool is de schaaleenheid een abstractie van rekenkracht die een datawarehouse-eenheid wordt genoemd.
Voor een serverloze SQL-pool wordt schaalaanpassing automatisch uitgevoerd om tegemoet te komen aan de vereisten voor queryresources. Naarmate de topologie na verloop van tijd verandert door knooppunten of failovers toe te voegen, te verwijderen, past deze zich aan wijzigingen aan en zorgt u ervoor dat uw query voldoende resources heeft en is voltooid. In de volgende afbeelding ziet u bijvoorbeeld een serverloze SQL-pool met behulp van vier rekenknooppunten om een query uit te voeren.
Synapse SQL maakt gebruik van een architectuur op basis van knooppunten. Toepassingen maken verbinding met T-SQL-opdrachten en geven deze uit aan een besturingsknooppunt. Dit is het enige toegangspunt voor Synapse SQL.
Het Azure Synapse SQL Control-knooppunt maakt gebruik van een gedistribueerde query-engine om query's voor parallelle verwerking te optimaliseren en geeft bewerkingen door aan rekenknooppunten om hun werk parallel uit te voeren.
Het beheerknooppunt voor serverloze SQL-pools maakt gebruik van de DQP-engine (Distributed Query Processing) om gedistribueerde uitvoering van de gebruikersquery te optimaliseren en te organiseren door deze te splitsen in kleinere query's die worden uitgevoerd op rekenknooppunten. Elke kleine query wordt taak genoemd en vertegenwoordigt gedistribueerde uitvoeringseenheid. Het leest bestanden uit de opslag, voegt resultaten toe van andere taken, groepen of orders die zijn opgehaald uit andere taken.
De rekenknooppunten slaan alle gebruikersgegevens op in Azure Storage en voeren de parallelle query's uit. De DMS (Data Movement Service) is een interne service op systeemniveau die de gegevens naar de knooppunten verplaatst om tegelijkertijd query's te kunnen uitvoeren en nauwkeurige resultaten te retourneren.
Bij het gebruik van Synapse SQL met losgekoppelde opslag en rekenkracht kan men profiteren van een onafhankelijke grootte van rekenkracht, ongeacht uw opslagbehoeften. Voor het schalen van serverloze SQL-pools wordt automatisch uitgevoerd, terwijl u voor toegewezen SQL-pool het volgende kunt doen:
- Rekenkracht vergroten of verkleinen, binnen een toegewezen SQL-pool, zonder gegevens te verplaatsen.
- De rekencapaciteit onderbreekt terwijl gegevens intact blijven, zodat u alleen betaalt voor opslag.
- De rekencapaciteit hervatten tijdens werktijden.
Azure Storage
Synapse SQL maakt gebruik van Azure Storage om uw gebruikersgegevens veilig te houden. Omdat uw gegevens worden opgeslagen en beheerd door Azure Storage, worden er afzonderlijke kosten in rekening gebracht voor uw opslagverbruik.
Met een serverloze SQL-pool kunt u query's uitvoeren op uw Data Lake-bestanden, terwijl u met een toegewezen SQL-pool gegevens uit uw Data Lake-bestanden kunt opvragen en opnemen. Wanneer gegevens worden opgenomen in een toegewezen SQL-pool, worden de gegevens in distributies geshard om de prestaties van het systeem te optimaliseren. Bij het definiëren van de tabel kunt u kiezen welk sharding-patroon u wilt gebruiken om de gegevens te distribueren. Deze shardingpatronen worden ondersteund:
- Hash
- Round Robin
- Repliceren
Beheerknooppunt
Het beheerknooppunt is het brein van de architectuur. Het is de front-end met interactie met alle toepassingen en verbindingen.
In Synapse SQL wordt de gedistribueerde query-engine uitgevoerd op het besturingsknooppunt om parallelle query's te optimaliseren en te coördineren. Wanneer u een T-SQL-query verzendt naar een toegewezen SQL-pool, transformeert het beheerknooppunt deze in query's die parallel op elke distributie worden uitgevoerd.
In een serverloze SQL-pool wordt de DQP-engine uitgevoerd op het besturingsknooppunt om gedistribueerde uitvoering van de gebruikersquery te optimaliseren en te coördineren door deze op te splitsen in kleinere query's die worden uitgevoerd op rekenknooppunten. Ook worden sets bestanden toegewezen die door elk knooppunt moeten worden verwerkt.
Rekenknooppunten
De rekenknooppunten leveren de rekenkracht.
In een toegewezen SQL-pool worden distributies toegewezen aan rekenknooppunten voor verwerking. Naarmate u voor meer rekenresources betaalt, worden de distributies opnieuw toegewezen aan de beschikbare rekenknooppunten. Het aantal rekenknooppunten varieert van 1 tot 60 en wordt bepaald door het serviceniveau voor de toegewezen SQL-pool. Elk rekenknooppunt heeft een knooppunt-id die zichtbaar is in systeemweergaven. U kunt de id van het rekenknooppunt zien door te zoeken naar de kolom node_id in systeemweergaven waarvan de namen beginnen met sys.pdw_nodes. Zie Synapse SQL-systeemweergaven voor een lijst met deze systeemweergaven.
In een serverloze SQL-pool wordt aan elk rekenknooppunt een taak en een set bestanden toegewezen waarop de taak moet worden uitgevoerd. Taak is een gedistribueerde eenheid voor het uitvoeren van query's, die deel uitmaakt van de ingediende querygebruiker. Automatisch schalen is van kracht om ervoor te zorgen dat er voldoende rekenknooppunten worden gebruikt om een gebruikersquery uit te voeren.
Data Movement Service
Data Movement Service (DMS) is de technologie voor gegevenstransport in een toegewezen SQL-pool die de gegevensverplaatsing tussen de rekenknooppunten coördineert. Voor sommige query's is gegevensverplaatsing vereist om ervoor te zorgen dat de parallelle query's nauwkeurige resultaten retourneren. Wanneer gegevensverplaatsing is vereist, zorgt DMS ervoor dat de juiste gegevens naar de juiste locatie worden opgehaald.
Distributies
Een distributie is de basiseenheid voor opslag en verwerking voor parallelle query's die worden uitgevoerd op gedistribueerde gegevens in een toegewezen SQL-pool. Wanneer een toegewezen SQL-pool een query uitvoert, wordt het werk onderverdeeld in 60 kleinere query's die parallel worden uitgevoerd.
Elk van de 60 kleinere query's wordt uitgevoerd op een van de gegevensdistributies. Elk rekenknooppunt beheert een of meer van de 60 distributies. Een toegewezen SQL-pool met maximale rekenresources heeft één distributie per rekenknooppunt. Een toegewezen SQL-pool met minimale rekenresources heeft alle distributies op één rekenknooppunt.
Met hash gedistribueerde tabellen
Een met hash gedistribueerde tabel kan de hoogste queryprestaties leveren voor samenvoegingen en aggregaties in grotere tabellen.
Als u gegevens wilt sharden in een door hash gedistribueerde tabel, gebruikt een toegewezen SQL-pool een hash-functie om elke rij deterministisch toe te wijzen aan één distributie. In de tabeldefinitie wordt een van de kolommen ingesteld als de distributiekolom. De hashfunctie maakt gebruik van de waarden in de distributiekolom om elke rij toe te wijzen aan een distributie.
In het volgende diagram ziet u hoe een volledige (niet-gedistribueerde tabel) wordt opgeslagen als een door hash gedistribueerde tabel.
- Elke rij behoort tot één distributie.
- Een deterministisch hash-algoritme wijst elke rij toe aan één distributie.
- Het aantal tabelrijen per distributie varieert, zoals wordt weergegeven door de verschillende grootten van tabellen.
Er zijn prestatieoverwegingen voor de selectie van een distributiekolom, zoals uniekheid, scheeftrekken van gegevens en de typen query's die op het systeem worden uitgevoerd.
Met round robin gedistribueerde tabellen
Een round robin-tabel is de eenvoudigste tabel voor het maken en leveren van snelle prestaties wanneer deze wordt gebruikt als faseringstabel voor laden.
Een met round robin gedistribueerde tabel distribueert de gegevens gelijkmatig in de tabel, maar zonder verdere optimalisatie. Een distributie wordt eerst willekeurig gekozen en vervolgens worden buffers van rijen opeenvolgend toegewezen aan distributies. Het is snel om gegevens in een round robin-tabel te laden, maar queryprestaties kunnen vaak beter zijn met gedistribueerde hashtabellen. Joins voor round robin-tabellen vereisen het opnieuw opvragen van gegevens, wat extra tijd kost.
Gerepliceerde tabellen
Een gerepliceerde tabel biedt de snelste prestaties van query's voor kleine tabellen.
Een tabel die wordt gerepliceerd, slaat een volledige kopie van de tabel op elk rekenknooppunt in de cache op. Als u een tabel repliceert, hoeft u dus geen gegevens over te dragen tussen rekenknooppunten voordat een join of aggregatie wordt uitgevoerd. Gerepliceerde tabellen zijn het meest geschikt als het gaat om kleine tabellen. Er is extra opslagruimte vereist en er is extra overhead die wordt gemaakt bij het schrijven van gegevens, waardoor grote tabellen onpraktisch zijn.
In het onderstaande diagram ziet u een gerepliceerde tabel die in de cache is opgeslagen in de eerste distributie op elk rekenknooppunt.
Gerelateerde inhoud
Nu u wat weet over Synapse SQL, leert u hoe u snel een toegewezen SQL-pool maakt en voorbeeldgegevens laadt. Of begin met het gebruik van een serverloze SQL-pool. Als u geen ervaring hebt met Azure, is de Woordenlijst van Azure mogelijk nuttig wanneer u nieuwe terminologie tegenkomt.