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 verdelen. Compute staat los van opslag, waardoor u onafhankelijk van de gegevens in uw systeem rekenkracht kunt schalen.

Voor een toegewezen SQL-pool is de schaaleenheid een abstractie van de rekenkracht die een datawarehouse-eenheid wordt genoemd.

Voor een serverloze SQL-pool, omdat deze serverloos is, wordt het schalen automatisch uitgevoerd om te voldoen aan de vereisten voor queryresources. Als de topologie in de loop van de tijd verandert door knooppunten toe te voegen, te verwijderen of failovers te verwijderen, wordt deze aangepast aan wijzigingen en zorgt ervoor dat uw query voldoende resources heeft en met succes wordt voltooid. In de volgende afbeelding ziet u bijvoorbeeld een serverloze SQL-pool die gebruikmaakt van vier rekenknooppunten om een query uit te voeren.

Schermopname van Synapse SQL-architectuur.

Synapse SQL maakt gebruik van een architectuur op basis van knooppunten. Toepassingen maken verbinding en geven T-SQL-opdrachten uit aan een besturingsknooppunt, 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 DQP-engine (Distributed Query Processing) om gedistribueerde uitvoering van gebruikersquery's te optimaliseren en te organiseren door deze op te splitsen in kleinere query's die worden uitgevoerd op rekenknooppunten. Elke kleine query wordt taak genoemd en vertegenwoordigt een gedistribueerde uitvoeringseenheid. Het leest bestand(en) uit de opslag, voegt resultaten van andere taken, groepen toe of bestelt gegevens 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.

Met losgekoppelde opslag en rekenkracht kunt u bij het gebruik van Synapse SQL profiteren van een onafhankelijk formaat van de rekenkracht, ongeacht uw opslagbehoeften. Voor serverloze SQL-pool wordt het schalen automatisch uitgevoerd, terwijl voor een toegewezen SQL-pool het volgende kan worden gedaan:

  • Vergroot of verklein de rekenkracht binnen een toegewezen SQL-pool, 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 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 knooppunt Beheer om parallelle query's te optimaliseren en te coördineren. Wanneer u een T-SQL-query verzendt naar een toegewezen SQL-pool, wordt deze door het knooppunt Control omgezet in query's die parallel op elke distributie worden uitgevoerd.

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 op te splitsen in kleinere query's die worden uitgevoerd op rekenknooppunten. Er worden ook 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 rekenknooppunt-id 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 uitvoeringseenheid voor query's, die eigenlijk deel uitmaakt van de query die door de gebruiker is ingediend. 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 een toegewezen SQL-pool die de gegevensverplaatsing tussen de rekenknooppunten coördineert. Sommige query's vereisen gegevensverplaatsing om ervoor te zorgen dat de parallelle query's nauwkeurige resultaten retourneren. Wanneer gegevensverplaatsing is vereist, zorgt DMS ervoor dat de juiste gegevens op de juiste locatie komen.

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.

Voor het sharden van gegevens in een 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 met hash gedistribueerde tabel.

Schermopname van een tabel die is opgeslagen als een hash-distributie.

  • Elke rij behoort tot één distributie.
  • Een deterministisch hash-algoritme wijst elke rij toe aan één distributie.
  • Het aantal tabelrijen per verdeling varieert, afhankelijk van de verschillende grootten van tabellen.

Er zijn prestatieoverwegingen voor de selectie van een distributiekolom, zoals uniekheid, gegevensverschil 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 te maken en levert snelle prestaties wanneer deze wordt gebruikt als faseringstabel voor belasting.

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 de queryprestaties kunnen vaak beter zijn met gedistribueerde hashtabellen. Voor joins in round robin-tabellen moeten de gegevens opnieuw worden geherschikt, 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 vóór een join of aggregatie. Gerepliceerde tabellen zijn het meest geschikt als het gaat om kleine tabellen. Er is extra opslag vereist en er is extra overhead die ontstaat bij het schrijven van gegevens, waardoor grote tabellen niet praktisch zijn.

In het onderstaande diagram ziet u een gerepliceerde tabel die in de cache is opgeslagen op de eerste distributie op elk rekenknooppunt.

Schermopname van de gerepliceerde tabel in de cache op de eerste distributie op elk rekenknooppunt.

Volgende stappen

Nu u een beetje 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 nog geen ervaring hebt met Azure, kan de Azure-woordenlijst handig zijn als u nieuwe terminologie tegenkomt.