Architektura Azure Synapse SQL

Tento článek popisuje komponenty architektury Synapse SQL. Vysvětluje také, jak Azure Synapse SQL kombinuje funkce distribuovaného zpracování dotazů se službou Azure Storage, aby bylo dosaženo vysokého výkonu a škálovatelnosti.

Komponenty architektury Synapse SQL

Synapse SQL používá architekturu škálování na více systémů k distribuci výpočetního zpracování dat mezi více uzlů. Výpočty jsou oddělené od úložiště, což umožňuje škálovat výpočetní prostředky nezávisle na datech v systému.

U vyhrazeného fondu SQL je jednotkou škálování abstrakce výpočetního výkonu, která se označuje jako jednotka datového skladu.

U bezserverového fondu SQL, který je bezserverový, se škálování provádí automaticky, aby vyhovovalo požadavkům na prostředky dotazů. Vzhledem k tomu, že se topologie v průběhu času mění přidáním nebo odebráním uzlů nebo převzetí služeb při selhání, přizpůsobí se změnám a zajistí, aby váš dotaz měl dostatek prostředků a úspěšně se dokončil. Například následující obrázek ukazuje bezserverový fond SQL používající čtyři výpočetní uzly ke spuštění dotazu.

Snímek obrazovky s architekturou Synapse SQL

Synapse SQL používá architekturu založenou na uzlech. Aplikace se připojují a vydávají příkazy T-SQL k řídicímu uzlu, který je jediným vstupním bodem pro Synapse SQL.

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

Řídicí uzel bezserverového fondu SQL 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 budou spouštět na výpočetních uzlech. Každý malý dotaz se nazývá úkol a představuje distribuovanou prováděcí jednotku. Čte soubory z úložiště, spojuje výsledky z jiných úkolů, skupin nebo objednává data načtená z jiných úkolů.

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.

S odděleným úložištěm a výpočetními prostředky můžete při použití Synapse SQL těžit z nezávislé velikosti výpočetního výkonu bez ohledu na vaše potřeby úložiště. Pro bezserverové škálování fondu SQL se škálování provádí automaticky, zatímco u vyhrazeného fondu SQL můžete:

  • Zvětšete nebo zmenšete výpočetní výkon v rámci vyhrazeného fondu 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 používá Azure Storage k zabezpečení vašich uživatelských dat. Vzhledem k tomu, že vaše data jsou uložená a spravovaná službou Azure Storage, platí se za využití úložiště samostatný poplatek.

Bezserverový fond SQL umožňuje dotazovat se na soubory Data Lake, zatímco vyhrazený fond SQL umožňuje dotazování a ingestování dat ze souborů Data Lake. Při ingestování dat do vyhrazeného fondu SQL se data rozdělí 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.

V Synapse SQL běží distribuovaný dotazovací stroj na řídicím uzlu za účelem optimalizace a koordinace paralelních dotazů. Když odešlete dotaz T-SQL do vyhrazeného fondu SQL, řídicí uzel ho transformuje na dotazy, které běží paralelně pro každou distribuci.

V bezserverovém fondu SQL běží modul DQP na řídicím uzlu, aby optimalizoval a koordinoval distribuované provádění uživatelských dotazů rozdělením na menší dotazy, které se budou spouštět 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 fondu SQL se distribuce mapují 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ů se pohybuje od 1 do 60 a je určen úrovní služby pro vyhrazený fond SQL. 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 vyhledáním sloupce node_id v systémových zobrazeních, jejichž názvy začínají sys.pdw_nodes. Seznam těchto systémových zobrazení najdete v tématu Systémová zobrazení Synapse SQL.

V bezserverovém fondu SQL je každému výpočetnímu uzlu přiřazen úkol a sada souborů, se kterým se má úkol provést. Úkol je distribuovaná jednotka provádění dotazů, která je ve skutečnosti součástí dotazu odeslaného uživatelem. Automatické škálování zajišťuje, aby se zajistilo, že se ke spuštění uživatelských dotazů využívá dostatek výpočetních uzlů.

Data Movement Service

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

Distribuce

Distribuce je základní jednotka úložiště a zpracování paralelních dotazů, které běží na distribuovaných datech ve vyhrazeném fondu SQL. Když vyhrazený fond SQL spustí dotaz, práce se rozdělí do 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 počtem výpočetních prostředků má jednu distribuci na výpočetní uzel. Vyhrazený fond 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 tabulky s distribuovanou hodnotou hash 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á (nedistribuovaná tabulka) uloží jako distribuovaná tabulka hash.

Snímek obrazovky s tabulkou uloženou jako distribuce hodnot hash

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

Výběr distribučního sloupce zohledňuje výkon, například jedinečnost, nerovnoměrnou distribuci dat a typy dotazů spuštěných v systému.

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

Tabulka kruhového dotazování je nejjednodušší tabulkou, která se vytváří, a poskytuje rychlý výkon, pokud se používá jako přípravná tabulka 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 potom se k distribucím postupně přiřazují vyrovnávací paměti řádků. Načtení dat do tabulky kruhového dotazování je rychlé, ale výkon dotazů může být často lepší s distribuovanými tabulkami hash. Spojení u tabulek kruhového dotazování vyžadují přemíchání dat, což trvá delší dobu.

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. Replikace tabulky tedy odebere nutnost 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 je potřeba další režijní náklady, díky čemuž jsou velké tabulky 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.

Snímek obrazovky replikované tabulky uložené v mezipaměti v první distribuci na každém výpočetním uzlu

Další kroky

Teď, když už trochu víte o Synapse SQL, se dozvíte, jak rychle vytvořit vyhrazený fond SQL a načíst ukázková data. Nebo začněte používat bezserverový fond SQL. Pokud s Azure začínáte, může vám být užitečný glosář Azure , když se setkáte s novou terminologií.