Co dává Microsoft SQL Server 2016 vývojářům na hraní?

Na Mezinárodní den dětí jsme my, databázisté, dostali od Microsoftu krásný a dlouho očekávaný dárek – zbrusu nový Microsoft SQL Server 2016. Co nám naše nová „hračka“ přináší?

Velký důraz je samozřejmě kladen na stálé zvyšování výkonnosti, a to jak z pohledu posilování db enginu, tak z pohledu diagnostiky a optimalizace vývojářem. Výkon byl rozhodně posílen novou metodikou nazvanou Real-Time Operational Analytics (RTOA). Tato metodika je postavena na clustered columnstore indexech, a to jak na diskových, tak nově také na in-memory tabulkách. RTOA řeší problém, jak vyřešit okamžitou analýzu nad daty, která právě vznikají. Celý mechanismus je postaven na tom, že máme-li analyzovat data z jediného (OLTP) zdroje, podporovat agregační dotazy sestavou tradičních B-tree indexů prakticky nelze díky prudce zvýšené režii zamykání. Proto je nad exponovanou tabulkou postaven jediný columnstore index, který je updatován dávkově a asynchronně vzhledem k modifikacím dat ve zdrojové tabulce, a tak nevzniká problém se zamykáním. Data, která ještě nejsou obsažena v columnstore indexu jsou umístěna v pomocné tzv. delta-storage, odkud jsou při dotazu načítána.

Microsoft také rozšířil diagnostické výkonnostní nástroje. Za zmínku stojí dvě nové funkce:

  • První z nich je Query store. Trvalé úložiště, které lze zapnout v databázi, a které ukládá a poskytuje data o průběhu dotazů. Query Store je transparentní vůči běžné zátěži, protože sběr dat o dotazech, jejich plánech a jejich průběhu, je opět asynchronní. Velkou výhodou pro vývojáře, který má optimalizovat databázi, je možnost pohledu do historie vykonávání určitého dotazu. Tato možnost při použití běžných dynamic management objektů chyběla.
  • Druhá ze zmiňovaných diagnostických funkcí patří hlavně Management Studiu 2016, a jmenuje se Live Query Statistics. Tato funkce se zapíná nenápadnou ikonkou v toolboxu Management Studia 2016 hned vedle už tradičních ikon Estimated Execuciton Plan a Actual Execution Plan. Po zapnutí a spuštění analyzovaného dotazu dostane vývojář velmi přehlednou animaci exekučního plánu, která krásně ukáže, kde je úzké místo v optimalizovaném dotazu. A jako malý bonus se dá tato funkce spustit i proti SQL Serveru 2014.

 

Velkým příspěvkem k výkonnosti byly na SQL Serveru 2014 in-memory tabulky a nativně kompilované uložené procedury. Schopnosti in-memory tabulek byly na SQL Serveru 2016 povýšeny jak kapacitně (z původního maximálního 256GB prostoru na aktuální 2 TB), tak funkčně. In-memory tabulky lze totiž nově optimalizovat columnstore indexem, ale také je možno z in-memory tabulky referovat cizím klíčem na jiné tabulky. Nativně kompilované uložené procedury měly ve své první verzi mnohá omezení v syntaxích. Nově lze např. používat poddotazy, logický operátor OR, operátory OUTER JOINu a další. Za zmínku také stojí možnost tvorby nativně kompilovaných funkcí a triggerů.

Zajímavé možnosti jistě přinese také sada bezpečnostních prvků. Prvním z nich je row level security. Tato funkce umožňuje definici funkcí propojených pomocí nového databázového objektu (tzv. SECURITY POLICY) na příslušnou tabulku. Po tomto propojení SQL Server transparentně odfiltruje z dotazu nad tabulkou pouze ty záznamy, které budou „schváleny“ napojenou bezpečnostní funkcí.

Z trochu jiného soudku je pak dynamic data masking. Microsoft (zatím) přichystal čtyři maskovací funkce, které lze nastavit na sloupec v tabulce. Data ve sloupci jsou sice uložena v čistém formátu, ale pokud uživatel, který chce data číst, nemá UNMASK permissions, nikdy neuvidí hodnoty ze sloupce zobrazeny celé, ale vždy zčásti zakryté hvězdičkami. Tento princip je dobře známý např. u zobrazení čísel bankovních karet a podobných citlivých údajů.

Ve výčtu nových funkcí by se dalo pokračovat ještě dlouho. V tomto krátkém povídání vůbec nedošlo na „Azure“ scénáře, ať už je to stretch database, vylepšení managed backupů do Azure, možnosti umisťovat datové soubory on-premise databáze do Azure a další. Ale to už mnohdy přísluší administrátorům, kterým nezbývá, než naše vývojářské vynálezy udržet naživu.

Aktuálne kurzy SQL Server 2016 nájdete TU.

Mgr. Vladimír Mužný
nezávislý konzultant a vývojár databázových riešení na platforme Microsoft SQL Server
SQL Data Science Degree Attendant

MCT, MCSE: Data Platform, MCSE: Business Intelligence