Azure Synapse SQL-architectuur
In dit artikel worden de architectuuronderdelen van Synapse SQL.
Architectuuronderdelen van Synapse SQL
Synapse SQL een uitschaalarchitectuur om rekenkundige verwerking van gegevens over meerdere knooppunten te verdelen. Compute staat los van opslag, waardoor u de rekenkracht onafhankelijk van de gegevens in uw systeem kunt schalen.
Voor toegewezen SQL is de schaaleenheid een abstractie van rekenkracht die bekend staat als een datawarehouse-eenheid.
Voor serverloze SQL, omdat deze serverloos is, wordt automatisch geschaald om te voldoen aan de vereisten voor queryresources. Naarmate de topologie na een periode verandert door knooppunten of failovers toe te voegen, wordt deze aangepast aan wijzigingen en zorgt deze ervoor dat uw query voldoende resources heeft en met succes wordt voltooid. In de onderstaande afbeelding ziet u bijvoorbeeld een serverloze SQL pool die gebruikmaakt van 4 rekenknooppunten om een query uit te voeren.

Synapse SQL een architectuur op basis van knooppunt. Toepassingen maken verbinding en geven T-SQL-opdrachten uit aan een beheer knooppunt. Dit is het enige toegangspunt voor Synapse-SQL.
Het Azure Synapse SQL Control-knooppunt maakt gebruik van een gedistribueerde query-engine om query's te optimaliseren voor parallelle verwerking en geeft vervolgens bewerkingen door aan rekenknooppunten om hun werk parallel uit te voeren.
Het beheerknooppunt van de serverloze SQL-pool maakt gebruik van de DQP-engine (Distributed Query Processing) om gedistribueerde uitvoering van gebruikersquery's te optimaliseren en in te delen door deze te splitsen in kleinere query's die worden uitgevoerd op rekenknooppunten. Elke kleine query wordt taak genoemd en vertegenwoordigt een gedistribueerde uitvoeringseenheid. Het leest bestanden uit de opslag, voegt resultaten van andere taken, groepen of orders toe 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.
Wanneer u Synapse SQL, kunt u met ontkoppelde opslag en rekenkracht profiteren van onafhankelijke rekenkracht, ongeacht uw opslagbehoeften. Voor serverloze SQL het schalen van de pool automatisch uitgevoerd, terwijl voor toegewezen SQL pool het volgende mogelijk is:
- U kunt de rekenkracht in een toegewezen SQL verkleinen zonder gegevens te verplaatsen.
- De rekencapaciteit onderbreekt terwijl gegevens intact blijven, zodat u alleen betaalt voor opslag.
- De rekencapaciteit hervat 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 brengen voor uw opslagverbruik.
Met serverloze SQL-pool kunt u query's uitvoeren op uw data lake-bestanden, terwijl u met toegewezen SQL-pool gegevens kunt opvragen en opnemen uit uw data lake-bestanden. Wanneer gegevens worden opgenomen in 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 beheer-knooppunt om parallelle query's te optimaliseren en te coördineren. Wanneer u een T-SQL-query naar toegewezen SQL-pool verstuurt, transformeert het beheer-knooppunt deze in query's die parallel worden uitgevoerd op elke distributie.
In een serverloze SQL-pool wordt de DQP-engine uitgevoerd op het beheerknooppunt om gedistribueerde uitvoering van gebruikersquery's te optimaliseren en te coördineren door deze 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 toegewezen SQL worden distributies toegewezen aan rekenknooppunten voor verwerking. Wanneer u voor meer rekenresources betaalt, worden de distributies door de pool opnieuw aan de beschikbare rekenknooppunten toebedeeld. Het aantal rekenknooppunten varieert van 1 tot 60 en wordt bepaald door het serviceniveau voor de toegewezen SQL pool. Elk reken knooppunt heeft een knooppunt-id die zichtbaar is in systeemweergaven. U kunt de id van het reken knooppunt bekijken 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 serverloze SQL-pool wordt aan elk reken knooppunt een taak en een set bestanden toegewezen om de taak op uit te voeren. Taak is een gedistribueerde eenheid voor het uitvoeren van query's, die deel uitmaakt van de verzonden querygebruiker. Automatisch schalen is van kracht om ervoor te zorgen dat er voldoende rekenknooppunten worden gebruikt om gebruikersquery's uit te voeren.
Data Movement Service
Data Movement Service (DMS) is de technologie voor gegevenstransport in toegewezen SQL-pool die de verplaatsing van gegevens tussen de rekenknooppunten coördineert. Voor sommige query's is gegevensverkeer vereist om ervoor te zorgen dat de parallelle query's nauwkeurige resultaten retourneren. Wanneer gegevens worden geplaats, zorgt DMS ervoor dat de juiste gegevens op de juiste locatie worden gevonden.
Distributies
Een distributie is de basiseenheid voor opslag en verwerking voor parallelle query's die worden uitgevoerd op gedistribueerde gegevens in toegewezen SQL-pool. Wanneer 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 rekenpunt beheert een of meer van de 60 distributies. Een toegewezen SQL pool met maximale rekenbronnen heeft één distributie per reken knooppunt. Een toegewezen SQL pool met minimale rekenbronnen heeft alle distributies op één rekenpunt.
Met hash gedistribueerde tabellen
Een met hash gedistribueerde tabel kan de hoogste queryprestaties leveren voor samenvoegingen en aggregaties in grotere tabellen.
Voor het sharden van gegevens in een met hash gedistribueerde tabel gebruikt 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 met 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 de uniekheid, scheefheid 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 om snelle prestaties te maken en te leveren wanneer deze wordt gebruikt als een faseringstabel voor belastingen.
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. In een round robin-tabel kunnen gegevens snel worden geladen. De prestaties van query's van met hash gedistribueerde tabellen zijn echter vaak beter. Voor joins op round robin-tabellen moeten gegevens opnieuw worden geshuffed. Dit kost extra tijd.
Gerepliceerde tabellen
Een gerepliceerde tabel biedt de snelste prestaties van query's voor kleine tabellen.
Een tabel die wordt gerepliceerd, cachet een volledige kopie van de tabel op elk reken knooppunt. Het repliceren van een tabel maakt het dus niet meer nodig om gegevens over te dragen tussen rekenknooppunten vóór een samenvoeging of aggregatie. Gerepliceerde tabellen zijn het meest geschikt als het gaat om kleine tabellen. Extra opslag is vereist en er wordt extra overhead in rekening gebracht bij het schrijven van gegevens, waardoor grote tabellen niet praktisch zijn.
In het onderstaande diagram ziet u een gerepliceerde tabel die in de cache wordt opgeslagen bij de eerste distributie op elk reken knooppunt.

Volgende stappen
Nu u iets weet over Synapse SQL, leert u hoe u snel een toegewezen SQL-pool kunt maken en voorbeeldgegevens kunt laden. U kunt ook serverloze SQL gebruiken. Als u niet bekend bent met Azure, kan de Azure-woordenlijst handig zijn bij het opzoeken van nieuwe terminologie.