Sdílet prostřednictvím


Přehled elastických dotazů azure SQL Database (Preview)

Platí pro: Azure SQL Database

Funkce elastických dotazů (ve verzi Preview) umožňuje spouštět dotazy Transact-SQL zahrnující několik databází ve službě Azure SQL Database. Umožňuje provádět mezidatabázové dotazy za účelem přístupu ke vzdáleným tabulkám a propojit nástroje Microsoftu a nástroje třetích stran (Excel, Power BI Tableau atd.) za účelem dotazování napříč datovými vrstvami u několika databází. S využitím této funkce můžete škálovat dotazy na velké datové vrstvy na více instancí a vizualizovat výsledky v sestavách business intelligence (BI).

Proč používat elastické dotazy

Azure SQL Database

Dotazování napříč databázemi ve službě Azure SQL Database je zcela v jazyce T-SQL. To umožňuje dotazování vzdálených databází jen pro čtení a poskytuje možnost pro aktuální zákazníky SQL Serveru migrovat aplikace pomocí třídílných názvů nebo propojených serverů do služby SQL Database.

K dispozici na všech úrovních služby

Elastický dotaz se podporuje ve všech úrovních služby Azure SQL Database. Podívejte se na část Omezení verze Preview níže týkající se omezení výkonu pro nižší úrovně služby.

Nasdílení parametrů do vzdálených databází

Elastické dotazy teď můžou odesílat parametry SQL do vzdálených databází pro spuštění.

Spuštění uložené procedury

Pomocí sp_execute _remote spusťte volání vzdálené uložené procedury nebo vzdálené funkce.

Flexibilita

Externí tabulky s elastickým dotazem můžou odkazovat na vzdálené tabulky s jiným názvem schématu nebo tabulky.

Scénáře elastických dotazů

Cílem je usnadnit dotazování scénářů, kdy více databází přispívá řádky do jednoho celkového výsledku. Dotaz může buď vytvořit uživatel nebo aplikace přímo, nebo nepřímo prostřednictvím nástrojů, které jsou připojené k databázi. To je zvlášť užitečné při vytváření sestav, používání komerčních nástrojů BI nebo nástrojů pro integraci dat nebo jakékoli aplikace, kterou nelze změnit. S elastickým dotazem můžete dotazovat napříč několika databázemi pomocí známého prostředí připojení SQL Serveru v nástrojích, jako jsou Excel, Power BI, Tableau nebo Cognos. Elastický dotaz umožňuje snadný přístup k celé kolekci databází prostřednictvím dotazů vydaných aplikací SQL Server Management Studio nebo sady Visual Studio a usnadňuje dotazování mezi databázemi z Entity Frameworku nebo jiných prostředí ORM. Obrázek 1 znázorňuje scénář, kdy existující cloudová aplikace (která používá klientskou knihovnu elastické databáze) staví na datové vrstvě se škálováním na více systémů a elastický dotaz se používá pro generování sestav napříč databázemi.

Obrázek 1 Elastický dotaz použitý ve škálované datové vrstvě

Elastický dotaz používaný na datové vrstvě horizontálního navýšení kapacity

Scénáře zákazníků pro elastický dotaz jsou charakterizovány následujícími topologiemi:

  • Vertikální dělení – dotazy napříč databázemi (topologie 1): Data jsou rozdělena svisle mezi několik databází v datové vrstvě. V různých databázích se obvykle nacházejí různé sady tabulek. To znamená, že schéma se liší v různých databázích. Například všechny tabulky pro inventář jsou v jedné databázi, zatímco všechny tabulky související s účetnictvím jsou v druhé databázi. Běžné případy použití této topologie vyžadují, aby se jeden dotazoval napříč tabulkami nebo kompiloval sestavy napříč tabulkami v několika databázích.
  • Horizontální dělení – horizontální dělení (topologie 2): Data jsou rozdělena vodorovně, aby se řádky distribuovaly napříč datovou vrstvou s horizontálním navýšením kapacity. Díky tomuto přístupu je schéma stejné u všech zúčastněných databází. Tento přístup se také označuje jako horizontální dělení. Shardování je možné provádět a spravovat pomocí (1) knihoven nástrojů elastické databáze nebo (2) samoobslužného horizontálního dělení. Elastický dotaz se používá k dotazování nebo kompilaci sestav napříč mnoha horizontálními oddíly. Horizontální oddíly jsou obvykle databáze v rámci elastického fondu. Elastický dotaz si můžete představit jako efektivní způsob dotazování na všechny databáze elastického fondu najednou, pokud databáze sdílejí společné schéma.

Poznámka:

Elastický dotaz je nejvhodnější pro scénáře vytváření sestav, ve kterých lze většinu zpracování (filtrování, agregace) provádět na externí zdrojové straně. Není vhodný pro operace ETL, kdy se velké množství dat přenáší ze vzdálených databází. U náročných úloh generování sestav nebo scénářů datových skladů s složitějšími dotazy zvažte také použití služby Azure Synapse Analytics.

Vertikální dělení – dotazy napříč databázemi

Pokud chcete začít psát kód, přečtěte si téma Začínáme s dotazem napříč databázemi (vertikální dělení).

Elastický dotaz lze použít k tomu, aby byla data umístěná v databázi ve službě SQL Database k dispozici pro jiné databáze ve službě SQL Database. To umožňuje dotazům z jedné databáze odkazovat na tabulky v jakékoli jiné vzdálené databázi ve službě SQL Database. Prvním krokem je definování externího zdroje dat pro každou vzdálenou databázi. Externí zdroj dat je definován v místní databázi, ze které chcete získat přístup k tabulkám umístěným ve vzdálené databázi. Ve vzdálené databázi nejsou nutné žádné změny. Pro typické scénáře vertikálního dělení, kdy různé databáze mají různá schémata, je možné elastické dotazy použít k implementaci běžných případů použití, jako je přístup k referenčním datům a dotazování mezi databázemi.

Důležité

Musíte mít oprávnění ALTER ANY EXTERNAL DATA SOURCE. Toto oprávnění je součástí oprávnění ALTER DATABASE. K odkazování na podkladový zdroj dat jsou potřeba oprávnění ALTER ANY EXTERNAL DATA SOURCE.

Referenční data: Topologie se používá pro správu referenčních dat. Na následujícím obrázku jsou dvě tabulky (T1 a T2) s referenčními daty uloženy ve vyhrazené databázi. Pomocí elastického dotazu teď můžete přistupovat k tabulkám T1 a T2 vzdáleně z jiných databází, jak je znázorněno na obrázku. Topologii 1 použijte, pokud jsou referenční tabulky malé nebo vzdálené dotazy do referenční tabulky mají selektivní predikáty.

Obrázek 2 Vertikální dělení – Použití elastického dotazu k dotazování referenčních dat

Vertikální dělení – použití elastického dotazu k dotazování referenčních dat

Dotazování mezi databázemi: Elastické dotazy umožňují případy použití, které vyžadují dotazování napříč několika databázemi ve službě SQL Database. Obrázek 3 znázorňuje čtyři různé databáze: CRM, Inventory, HR a Products. Dotazy prováděné v jedné z databází také potřebují přístup k jedné nebo ke všem ostatním databázím. Pomocí elastického dotazu můžete pro tento případ nakonfigurovat databázi spuštěním několika jednoduchých příkazů DDL v každé ze čtyř databází. Po této jednorázové konfiguraci je přístup ke vzdálené tabulce stejně jednoduchý jako odkaz na místní tabulku z dotazů T-SQL nebo z nástrojů BI. Tento přístup se doporučuje, pokud vzdálené dotazy nevrací velké výsledky.

Obrázek 3 Vertikální dělení – použití elastického dotazu k dotazování napříč různými databázemi

Vertikální dělení – použití elastického dotazu k dotazování napříč různými databázemi

Následující kroky nakonfigurují dotazy elastické databáze pro scénáře vertikálního dělení, které vyžadují přístup k tabulce umístěné ve vzdálených databázích ve službě SQL Database se stejným schématem:

Po spuštění příkazů DDL můžete přistupovat ke vzdálené tabulce mytable, jako by to byla místní tabulka. Azure SQL Database automaticky otevře připojení ke vzdálené databázi, zpracuje vaši žádost o vzdálenou databázi a vrátí výsledky.

Horizontální dělení – horizontální dělení

Použití elastického dotazu k provádění úloh vytváření sestav nad horizontálně dělenou vrstvou dat vyžaduje mapu horizontálních oddílů elastické databáze, která představuje databáze datové vrstvy. V tomto scénáři se obvykle používá pouze jedna mapa horizontálních oddílů a vyhrazená databáze s funkcemi elastických dotazů (hlavní uzel) slouží jako vstupní bod pro dotazy generování sestav. Pouze tato vyhrazená databáze potřebuje přístup k mapě horizontálních oddílů. Obrázek 4 znázorňuje tuto topologii a její konfiguraci pomocí databáze elastických dotazů a mapy horizontálních oddílů. Další informace o klientské knihovně elastické databáze a vytváření map horizontálních oddílů najdete v tématu Správa mapování horizontálních oddílů.

Obrázek 4 Horizontální dělení – Použití elastického dotazu pro generování sestav nad horizontálně dělenými datovými vrstvami

Horizontální dělení – Použití elastického dotazu pro generování sestav nad horizontálně dělenými datovými vrstvami

Poznámka:

Elastic Query Database (hlavní uzel) může být samostatná databáze nebo může být stejná databáze, která je hostitelem mapy horizontálních oddílů. Ať zvolíte jakoukoli konfiguraci, ujistěte se, že úroveň služby a velikost výpočetních prostředků dané databáze jsou dostatečně vysoké, aby zvládly očekávané množství požadavků na přihlášení nebo dotazy.

Následující kroky nakonfigurují dotazy elastické databáze pro scénáře horizontálního dělení, které vyžadují přístup k sadě tabulek umístěných v (obvykle) několika vzdálených databázích ve službě SQL Database:

Po provedení těchto kroků můžete přistupovat k horizontálně dělené tabulce mytable, jako by šlo o místní tabulku. Azure SQL Database automaticky otevře několik paralelních připojení ke vzdáleným databázím, kde jsou tabulky fyzicky uložené, zpracuje požadavky na vzdálené databáze a vrátí výsledky. Další informace o krocích požadovaných pro scénář horizontálního dělení najdete v elastickém dotazu pro horizontální dělení.

Pokud chcete začít psát kód, přečtěte si téma Začínáme s elastickým dotazem pro horizontální dělení (horizontální dělení).

Důležité

Úspěšné spuštění elastického dotazu nad velkou sadou databází spoléhá při provádění dotazu do značné míry na dostupnost každé databáze. Pokud jedna z databází není dostupná, celý dotaz selže. Pokud plánujete dotazovat stovky nebo tisíce databází najednou, ujistěte se, že má vaše klientská aplikace vloženou logiku opakování, nebo zvažte využití elastických úloh a dotazování menších podmnožina databází, sloučení výsledků každého dotazu do jednoho cíle.

Dotazování T-SQL

Po definování externích zdrojů dat a externích tabulek můžete použít běžné připojovací řetězec SQL Serveru pro připojení k databázím, ve kterých jste definovali externí tabulky. Potom můžete spouštět příkazy T-SQL přes externí tabulky v daném připojení s omezeními popsanými níže. Další informace a příklady dotazů T-SQL najdete v tématech dokumentace pro horizontální dělení a vertikální dělení.

Možnosti připojení pro nástroje

Běžné připojovací řetězec SQL Serveru můžete použít k připojení aplikací a nástrojů pro integraci dat k databázím s externími tabulkami. Ujistěte se, že sql Server je podporovaný jako zdroj dat pro váš nástroj. Po připojení se podívejte na elastickou databázi dotazů a externí tabulky v této databázi stejně, jako byste to udělali s jakoukoli jinou databází SQL Serveru, ke které se připojujete pomocí nástroje.

Důležité

Elastické dotazy se podporují jenom při připojování s ověřováním SQL Serveru.

Náklady

Elastický dotaz je součástí nákladů na Azure SQL Database. Mějte na paměti, že topologie, ve kterých jsou vzdálené databáze v jiném datovém centru než koncový bod elastického dotazu, se podporují, ale odchozí přenos dat ze vzdálených databází se pravidelně účtuje podle sazeb Azure.

Omezení verze Preview

  • Spuštění prvního elastického dotazu může trvat až několik minut u menších prostředků a úrovně služby Standard a Pro obecné účely. Tentokrát je nutné načíst funkci elastického dotazu; zvýšení výkonu načítání s vyššími úrovněmi služby a velikostmi výpočetních prostředků.
  • Skriptování externích zdrojů dat nebo externích tabulek ze SSMS nebo SSDT se zatím nepodporuje.
  • Import/export pro SLUŽBU SQL Database zatím nepodporuje externí zdroje dat a externí tabulky. Pokud potřebujete použít import/export, před exportem tyto objekty odstraňte a po importu je znovu vytvořte.
  • Elastický dotaz aktuálně podporuje přístup jen pro čtení k externím tabulkám. V databázi, ve které je definována externí tabulka, však můžete použít úplné funkce Jazyka Transact-SQL. To může být užitečné, například zachovat dočasné výsledky pomocí příkazu SELECT <column_list INTO <local_table>> nebo definovat uložené procedury v databázi elastických dotazů, které odkazují na externí tabulky.
  • Kromě nvarchar(max) se v definicích externí tabulky nepodporují typy LOB (včetně prostorových typů). Jako alternativní řešení můžete vytvořit zobrazení vzdálené databáze, která přetypuje typ LOB na nvarchar(max), definovat externí tabulku přes zobrazení místo základní tabulky a pak ji přetypovat zpět do původního typu LOB v dotazech.
  • Sloupce datového typu nvarchar(max) v sadě výsledků zakazují pokročilé dávkové techniky používané v implementaci elastického dotazu a můžou ovlivnit výkon dotazu o řád, nebo dokonce dva řády v neanonických případech použití, kdy se v důsledku dotazu přenáší velké množství neagregovaných dat.
  • Statistiky sloupců u externích tabulek se v současné době nepodporují. Podporují se statistiky tabulek, ale je potřeba je vytvořit ručně.
  • Kurzory nejsou podporovány pro externí tabulky ve službě Azure SQL Database.
  • Elastický dotaz funguje jenom se službou Azure SQL Database. Nemůžete ho použít k dotazování instance SQL Serveru.
  • U databází, které jsou cílem externích zdrojů dat, se v současné době u elastických dotazů nepodporují privátní propojení.

Podělte se o svůj názor

Podělte se o své zkušenosti s elastickými dotazy níže, na fórech MSDN nebo na Stack Overflow. Zajímáme se o všechny druhy zpětné vazby o službě (vady, hrubé hrany, mezery v funkcích).

Další kroky