Architektura Azure Synapse SQL

Tento článek popisuje komponenty architektury synapse SQL.

Komponenty architektury SQL Synapse

Synapse SQL využívá architekturu horizontálního navýšení velikosti k distribuci výpočetního zpracování dat mezi několik uzlů. Výpočetní prostředky jsou oddělené od úložiště, což vám umožňuje škálovat výpočetní prostředky nezávisle na datech ve vašem systému.

U vyhrazeného SQL prostředků je jednotka škálování abstrakcí výpočetního výkonu, který se označuje jako jednotka datového skladu.

V případě SQL bez serveru se škálování provádí automaticky tak, aby vyhovovalo požadavkům na prostředky dotazů. S tím, jak se topologie mění v průběhu času přidáváním, odebíráním uzlů nebo převzetím služeb při selhání, se přizpůsobuje změnám a zajišťuje, aby váš dotaz měl dostatek prostředků a úspěšně se dokončil. Následující obrázek například ukazuje bezsmyšlený fond SQL, který ke spuštění dotazu využívá 4 výpočetní uzly.

Architektura Synapse SQL

Synapse SQL používá architekturu založenou na uzlech. Aplikace se připojují k řídicímu uzlu a SQL vysíl příkazy T-SQL.

Řídicí Azure Synapse SQL využívá distribuovaný dotazovací modul k optimalizaci dotazů pro paralelní zpracování a pak předává operace výpočetním uzlům, aby svou práci paralelně odváděl.

Řídicí uzel SQL bez serveru využívá modul DQP (Distributed Query Processing) k optimalizaci a orchestraci distribuovaného spouštění uživatelských dotazů rozdělením na menší dotazy, které se spustí na výpočetních uzlech. Každý malý dotaz se nazývá úloha a představuje distribuovanou jednotku spouštění. Čte soubory z úložiště, spojuje výsledky z jiných úloh, skupin nebo objednává data načtená z jiných úloh.

Výpočetní uzly ukládají veškerá data uživatelů ve službě Azure Storage a spouští paralelní dotazy. DMS (Data Movement Service) je interní služba na úrovni systému, která podle potřeby přesunuje data mezi uzly, aby bylo možné spouštět dotazy paralelně a získat přesné výsledky.

Díky oddělenému úložišti a výpočetním prostředkům může při použití synapse SQL využít nezávislé nastavení velikosti výpočetního výkonu bez ohledu na potřeby úložiště. V případě SQL se škálování fondu provádí automaticky, zatímco u vyhrazeného SQL můžete:

  • Zvětšete nebo zmenšete výpočetní výkon ve vyhrazeném SQL bez přesouvání dat.
  • pozastavit výpočetní kapacitu a zachovat neporušená data, zatímco platíte pouze za úložiště,
  • obnovit výpočetní kapacitu za provozu.

Azure Storage

Synapse SQL využívá Azure Storage k ochraně uživatelských dat. Vzhledem k tomu, že vaše data jsou uložená a spravovaná Azure Storage, účtuje se za využití úložiště samostatný poplatek.

Bez serveru SQL umožňuje dotazovat se na soubory data lake, zatímco vyhrazený fond SQL umožňuje dotazovat a ingestovat data ze souborů Data Lake. Při ingestování dat do vyhrazeného SQL se data shardují do distribucí, aby se optimalizoval výkon systému. Při definování tabulky můžete zvolit, který model horizontálního dělení se má pro distribuci dat použít. Podporují se tyto vzory horizontálního dělení:

  • Hodnoty hash
  • Kruhové dotazování
  • Replikace

Řídicí uzel

Mozkem této architektury je řídicí uzel. Jde o front-end, který komunikuje se všemi aplikacemi a připojeními.

Ve SQL Synapse běží distribuovaný dotazovací modul na řídicím uzlu za účelem optimalizace a koordinace paralelních dotazů. Když odešlete dotaz T-SQL vyhrazenému fondu SQL, řídicí uzel ho transformuje na dotazy, které běží paralelně na jednotlivých distribucích.

Ve fondu SQL běží modul DQP na řídicím uzlu za účelem optimalizace a koordinace distribuovaného provádění uživatelských dotazů tak, že ho rozdělí na menší dotazy, které se spustí na výpočetních uzlech. Přiřadí také sady souborů, které mají být zpracovány jednotlivými uzly.

Výpočetní uzly

Výpočetní uzly poskytují výpočetní výkon.

Ve vyhrazeném SQL se distribuce mapuje na výpočetní uzly pro zpracování. Když platíte za další výpočetní prostředky, fond přemapuje distribuce na dostupné výpočetní uzly. Počet výpočetních uzlů je v rozsahu od 1 do 60 a je určen úrovní služby pro vyhrazený SQL fond. Každý výpočetní uzel má ID uzlu, které je viditelné v systémových zobrazeních. ID výpočetního uzlu můžete zobrazit tak, že v systémových zobrazeních node_id sloupec, jehož názvy začínají sys.pdw_nodes. Seznam těchto systémových zobrazení najdete v tématu Synapse SQL systémových zobrazení.

Ve fondu SQL je každému výpočetnímu uzlu přiřazen úkol a sada souborů, ve které se má úloha provést. Úloha je distribuovaná jednotka spouštění dotazů, která je ve skutečnosti součástí odeslaného uživatele dotazu. Automatické škálování je v platnosti, aby se k provedení uživatelského dotazu využíl dostatek výpočetních uzlů.

Data Movement Service

Služba pro přesun dat (DMS) je technologie přenosu dat ve vyhrazeném SQL, která koordinuje přesun dat mezi výpočetními uzly. Některé dotazy vyžadují přesun dat, aby se zajistilo, že paralelní dotazy vrátí přesné výsledky. Pokud se vyžaduje přesun dat, DMS zajistí, aby se data správně přechádly na správné místo.

Distribuce

Distribuce je základní jednotkou úložiště a zpracování pro paralelní dotazy, které běží na distribuovaných datech ve vyhrazeném SQL fondu. Když SQL fond spustí dotaz, rozdělí se práce na 60 menších dotazů, které běží paralelně.

Každý z 60 menších dotazů běží na jedné z distribucí dat. Každý výpočetní uzel spravuje jednu nebo více z 60 distribucí. Vyhrazený fond SQL s maximálním výpočetním prostředky má jednu distribuci na výpočetní uzel. Vyhrazený SQL s minimálními výpočetními prostředky má všechny distribuce na jednom výpočetním uzlu.

Distribuované zatřiďovací tabulky (distribuce hodnot hash)

Distribuovaná zatřiďovací tabulka (distribuce hodnot hash) může přinést nejvyšší výkon dotazů pro spojení a agregaci u velkých tabulek.

K horizontálnímu dělení dat do distribuované zatřiďovací tabulky používá vyhrazený fond SQL funkci hash, která deterministicky přiřadí každý řádek k jedné distribuci. V definici tabulky je jeden ze sloupců určený jako sloupec distribuce. Funkce hash používá hodnoty ve sloupci distribuce k přiřazení jednotlivých řádků k distribuci.

Následující diagram znázorňuje, jak se úplná (ne distribuovaná tabulka) ukládá jako distribuovaná zatřiďovací tabulka.

Distribuovaná tabulka

  • Každý řádek patří do jedné distribuce.
  • Deterministický hashovací algoritmus přiřadí každý řádek k jedné distribuci.
  • Počet řádků tabulky na distribuci se liší podle různých velikostí tabulek.

Při výběru distribučního sloupce je třeba vzít v úvahu výkon, například odlišnost, nekosení dat a typy dotazů, které se v systému spouštěly.

Distribuované tabulky s kruhovým dotazováním

Tabulka kruhového dotazování je nejjednodušší tabulkou pro vytvoření a zajištění rychlého výkonu při použití jako pracovní tabulky pro načítání.

Distribuovaná tabulka s kruhovým dotazováním distribuuje data v tabulce rovnoměrně bez jakékoli další optimalizace. Rozdělení je nejprve zvoleno náhodně a pak jsou vyrovnávací paměti řádků přiřazeny k distribucím postupně. Načtení dat do tabulky s kruhovým dotazováním je rychlé, ale výkon dotazu je často možné zlepšit pomocí distribuovaných zatřiďovacích tabuelk (distribucí hodnot hash). Spojení u tabulek s kruhovým dotazováním vyžadují opětovné přeusílání dat, což vyžaduje další čas.

Replikované tabulky

Replikovaná tabulka poskytuje nejrychlejší výkon dotazů u malých tabulek.

Replikovaná tabulka ukládá do mezipaměti úplnou kopii tabulky na každém výpočetním uzlu. Proto replikace tabulky eliminuje potřebu přenášet data mezi výpočetními uzly před spojením nebo agregací. Replikované tabulky jsou nejlépe využitelné u malých tabulek. Vyžaduje se dodatečné úložiště a při zápisu dat vznikají další režijní náklady, které z velkých tabulek dělají nepraktické.

Následující diagram znázorňuje replikovanou tabulku, která je uložená v mezipaměti v první distribuci na každém výpočetním uzlu.

Replikovaná tabulka

Další kroky

Teď, když víte něco o synapse SQL, zjistěte, jak rychle vytvořit vyhrazený fond SQL a načíst ukázková data. Nebo můžete začít používat bez serveru SQL fondu. Pokud s Azure začínáte, můžete využít Glosář Azure, kde najdete potřebnou terminologii.