Architettura del pool SQL dedicato (precedentemente SQL DW) in Azure sinapsi AnalyticsDedicated SQL pool (formerly SQL DW) architecture in Azure Synapse Analytics

Azure Synapse Analytics è un servizio di analisi che riunisce funzionalità aziendali di data warehouse e analisi di Big Data.Azure Synapse Analytics is an analytics service that brings together enterprise data warehousing and Big Data analytics. Consente di eseguire query sui dati in base alle proprie esigenze.It gives you the freedom to query data on your terms.

Componenti dell'architettura di Synapse SQLSynapse SQL architecture components

Il pool SQL dedicato (in precedenza SQL DW) si avvale di un'architettura con scalabilità orizzontale per distribuire l'elaborazione computazionale dei dati tra più nodi.Dedicated SQL pool (formerly SQL DW) leverages a scale-out architecture to distribute computational processing of data across multiple nodes. L'unità di scalabilità è un'astrazione della potenza di calcolo nota come unità di data warehouse.The unit of scale is an abstraction of compute power that is known as a data warehouse unit. Poiché le risorse di calcolo sono separate dall'archiviazione, è possibile ridimensionarle indipendentemente dai dati presenti nel sistema.Compute is separate from storage, which enables you to scale compute independently of the data in your system.

Architettura del pool SQL dedicato (precedentemente SQL DW)

Il pool SQL dedicato (in precedenza SQL DW) usa un'architettura basata su nodi.Dedicated SQL pool (formerly SQL DW) uses a node-based architecture. Le applicazioni si connettono e inviano comandi T-SQL a un nodo di controllo.Applications connect and issue T-SQL commands to a Control node. Il nodo di controllo ospita il motore delle query distribuite, che ottimizza le query per l'elaborazione parallela e quindi passa le operazioni ai nodi di calcolo per eseguire il lavoro in parallelo.The Control node hosts the distributed query engine, which optimizes queries for parallel processing, and then passes operations to Compute nodes to do their work in parallel.

I nodi di calcolo archiviano tutti i dati utente in Archiviazione di Azure ed eseguono le query parallele.The Compute nodes store all user data in Azure Storage and run the parallel queries. Data Movement Service (DMS) è un servizio interno a livello di sistema che sposta i dati tra i nodi per eseguire query in parallelo e restituire risultati accurati.The Data Movement Service (DMS) is a system-level internal service that moves data across the nodes as necessary to run queries in parallel and return accurate results.

Con le risorse di archiviazione e di calcolo separate, quando si usa un pool SQL dedicato (in precedenza SQL DW), è possibile:With decoupled storage and compute, when using a dedicated SQL pool (formerly SQL DW) one can:

  • Ridimensionare la potenza di calcolo indipendentemente dalle esigenze di archiviazione.Independently size compute power irrespective of your storage needs.
  • Aumentare o ridurre la potenza di calcolo, all'interno di un pool SQL dedicato (in precedenza SQL DW), senza lo stato di trasferimento dei dati.Grow or shrink compute power, within a dedicated SQL pool (formerly SQL DW), without moving data.
  • Sospendere la capacità di calcolo mantenendo intatti i dati e consentendo di pagare solo per l'archiviazione.Pause compute capacity while leaving data intact, so you only pay for storage.
  • Riprendere le capacità di calcolo durante l'orario operativo.Resume compute capacity during operational hours.

Archiviazione di AzureAzure Storage

SQL pool SQL dedicato (in precedenza SQL DW) si avvale di archiviazione di Azure per proteggere i dati utente.Dedicated SQL pool SQL (formerly SQL DW) leverages Azure Storage to keep your user data safe. Poiché i dati vengono archiviati e gestiti da Archiviazione di Azure, è previsto un addebito separato per l'uso dello spazio di archiviazione.Since your data is stored and managed by Azure Storage, there is a separate charge for your storage consumption. I dati sono partizionati in distribuzioni per ottimizzare le prestazioni del sistema.The data is sharded into distributions to optimize the performance of the system. È possibile scegliere il modello di partizionamento orizzontale da usare per distribuire i dati quando si definisce la tabella.You can choose which sharding pattern to use to distribute the data when you define the table. Sono supportati i modelli di partizionamento seguenti:These sharding patterns are supported:

  • HashHash
  • Round robinRound Robin
  • ReplicaReplicate

Nodo di controlloControl node

Il nodo di controllo costituisce il componente principale dell'architettura.The Control node is the brain of the architecture. È il front-end che interagisce con tutte le applicazioni e le connessioni.It is the front end that interacts with all applications and connections. Il motore di query distribuite viene eseguito sul nodo di controllo per ottimizzare e coordinare le query parallele.The distributed query engine runs on the Control node to optimize and coordinate parallel queries. Quando si invia una query T-SQL, il nodo di controllo la trasforma in query che verranno eseguite in ogni distruzione in parallelo.When you submit a T-SQL query, the Control node transforms it into queries that run against each distribution in parallel.

Nodi di calcoloCompute nodes

I nodi di calcolo forniscono la potenza di calcolo.The Compute nodes provide the computational power. Viene eseguito il mapping delle distribuzioni ai nodi di calcolo per l'elaborazione.Distributions map to Compute nodes for processing. Quando si ottengono risorse di calcolo aggiuntive a pagamento, viene eseguito il mapping delle distribuzioni ai nodi di calcolo disponibili.As you pay for more compute resources, distributions are remapped to available Compute nodes. Il numero di nodi di calcolo è compreso tra 1 e 60 e viene determinato in base al livello di servizio associato a Synapse SQL.The number of compute nodes ranges from 1 to 60, and is determined by the service level for Synapse SQL.

Ogni nodo di calcolo ha un ID visibile nelle visualizzazioni di sistema.Each Compute node has a node ID that is visible in system views. È possibile individuare l'ID del nodo di calcolo cercando la colonna node_id nelle visualizzazioni di sistema il cui nome inizia con sys.pdw_nodes.You can see the Compute node ID by looking for the node_id column in system views whose names begin with sys.pdw_nodes. Per un elenco di queste viste di sistema, vedere sinapsi SQL System views.For a list of these system views, see Synapse SQL system views.

Data Movement ServiceData Movement Service

Data Movement Service (DMS) è la tecnologia di trasporto dei dati che coordina lo spostamento dei dati da un nodo di calcolo all'altro.Data Movement Service (DMS) is the data transport technology that coordinates data movement between the Compute nodes. Alcune query richiedono lo spostamento dei dati per garantire che le query parallele restituiscano risultati accurati.Some queries require data movement to ensure the parallel queries return accurate results. Quando lo spostamento dei dati è necessario, DMS assicura che i dati corretti vengano spostati nel percorso corretto.When data movement is required, DMS ensures the right data gets to the right location.

DistribuzioniDistributions

La distribuzione è l'unità di base dell'archiviazione e dell'elaborazione di query parallele eseguite su dati distribuiti.A distribution is the basic unit of storage and processing for parallel queries that run on distributed data. Quando Synapse SQL esegue una query, il processo viene suddiviso in 60 query di dimensioni più piccole che vengono eseguite in parallelo.When Synapse SQL runs a query, the work is divided into 60 smaller queries that run in parallel.

Ognuna delle 60 query viene eseguita in una distribuzione dei dati.Each of the 60 smaller queries runs on one of the data distributions. Ogni nodo di calcolo gestisce una o più delle 60 distribuzioni.Each Compute node manages one or more of the 60 distributions. Un pool SQL dedicato (in precedenza SQL DW) con risorse di calcolo massime dispone di una distribuzione per ogni nodo di calcolo.A dedicated SQL pool (formerly SQL DW) with maximum compute resources has one distribution per Compute node. Un pool SQL dedicato (in precedenza SQL DW) con risorse di calcolo minime dispone di tutte le distribuzioni in un nodo di calcolo.A dedicated SQL pool (formerly SQL DW) with minimum compute resources has all the distributions on one compute node.

Tabelle con distribuzione hashHash-distributed tables

Una tabella con distribuzione hash offre prestazioni di query più elevate per join e aggregazioni in tabelle di grandi dimensioni.A hash distributed table can deliver the highest query performance for joins and aggregations on large tables.

Per partizionare i dati in una tabella con distribuzione hash, viene usata una funzione hash per assegnare in modo deterministico ogni riga a un'unica distribuzione.To shard data into a hash-distributed table, a hash function is used to deterministically assign each row to one distribution. Nella definizione della tabella una delle colonne è definita come colonna di distribuzione.In the table definition, one of the columns is designated as the distribution column. La funzione hash usa i valori della colonna di distribuzione per assegnare ogni riga a una distribuzione.The hash function uses the values in the distribution column to assign each row to a distribution.

La figura seguente illustra come una tabella completa non distribuita viene archiviata come tabella con distribuzione hash.The following diagram illustrates how a full (non-distributed table) gets stored as a hash-distributed table.

Tabella distribuitaDistributed table

  • Ogni riga appartiene a una sola distribuzione.Each row belongs to one distribution.
  • Un algoritmo hash deterministico assegna ogni riga a una sola distribuzione.A deterministic hash algorithm assigns each row to one distribution.
  • Il numero di righe di tabella per distribuzione varia come mostrano le diverse dimensioni delle tabelle.The number of table rows per distribution varies as shown by the different sizes of tables.

Ai fini delle prestazioni, per la selezione di una colonna di distribuzione è necessario considerare alcuni aspetti, ad esempio la specificità, la differenza dei dati e i tipi di query eseguite nel sistema.There are performance considerations for the selection of a distribution column, such as distinctness, data skew, and the types of queries that run on the system.

Tabelle con distribuzione round robinRound-robin distributed tables

La tabella round robin è la tabella più semplice da creare e offre ottime prestazioni quando viene usata come tabella di staging per i caricamenti.A round-robin table is the simplest table to create and delivers fast performance when used as a staging table for loads.

Una tabella con distribuzione round robin distribuisce i dati in modo uniforme all'interno della tabella senza alcuna ottimizzazione aggiuntiva.A round-robin distributed table distributes data evenly across the table but without any further optimization. Viene innanzitutto selezionata casualmente una distribuzione, quindi i buffer di righe vengono assegnati in sequenza alle distribuzioni.A distribution is first chosen at random and then buffers of rows are assigned to distributions sequentially. Sebbene il caricamento dei dati in una tabella round robin risulti rapido, è spesso possibile ottenere prestazioni di query migliori con le tabelle con distribuzione hash.It is quick to load data into a round-robin table, but query performance can often be better with hash distributed tables. Per i join nelle tabelle round robin è necessaria una ridistribuzione dei dati, che richiede più tempo.Joins on round-robin tables require reshuffling data, which takes additional time.

Tabelle replicateReplicated Tables

Una tabella replicata offre le migliori prestazioni di query per le tabelle di piccole dimensioni.A replicated table provides the fastest query performance for small tables.

Una tabella replicata memorizza nella cache una copia completa della tabella di ogni nodo di calcolo.A table that is replicated caches a full copy of the table on each compute node. Di conseguenza, la replica di una tabella elimina la necessità di trasferire i dati tra i nodi di calcolo prima di un join o un'aggregazione.Consequently, replicating a table removes the need to transfer data among compute nodes before a join or aggregation. Le tabelle replicate sono particolarmente adatte all'uso con tabelle di piccole dimensioni.Replicated tables are best utilized with small tables. È necessario più spazio di archiviazione e si verifica un sovraccarico aggiuntivo durante la scrittura dei dati, che impedisce l'uso di tabelle di grandi dimensioni.Extra storage is required and there is additional overhead that is incurred when writing data, which make large tables impractical.

Il diagramma seguente mostra una tabella replicata memorizzata nella cache durante la prima distribuzione in ogni nodo di calcolo.The diagram below shows a replicated table that is cached on the first distribution on each compute node.

Tabella replicataReplicated table

Passaggi successiviNext steps

Ora che si conoscono le sinapsi di Azure, si apprenderà come creare rapidamente un pool SQL dedicato (in precedenza SQL DW) e caricare i dati di esempio.Now that you know a bit about Azure Synapse, learn how to quickly create a dedicated SQL pool (formerly SQL DW) and load sample data. Se non si ha familiarità con Azure, il glossario di Azure può essere utile quando si incontrano termini nuovi.If you are new to Azure, you may find the Azure glossary helpful as you encounter new terminology. In alternativa, vedere alcune delle altre risorse disponibili per Azure Synapse.Or look at some of these other Azure Synapse Resources.