Přehled elastických dotazů azure SQL Database (Preview)
Platí pro:Azure SQL Database
Funkce elastického dotazu (ve verzi Preview) umožňuje spustit dotaz Transact-SQL (T-SQL), který zahrnuje více 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, která se nedá 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ě
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é nazývá 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í ALTER DATABASE
oprávnění.
ALTER ANY EXTERNAL DATA SOURCE
oprávnění jsou nutná k odkazování na podkladový zdroj dat.
Referenční data: Topologie se používá pro správu referenčních dat. Na následujícím obrázku se ve vyhrazené databázi uchovávají dvě tabulky (T1 a T2) s referenčními daty. 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
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
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:
CREATE MASTER KEY
mymasterkey
VYTVOŘENÍ
mycredential
PŘIHLAŠOVACÍCH ÚDAJŮ S VYMEZENÝM OBOREM DATABÁZEVYTVOŘENÍ EXTERNÍHO ZDROJE DAT
mydatasource
typuRDBMS
VYTVOŘENÍ EXTERNÍ TABULKY
mytable
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
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ý počet požadavků na přihlášení nebo dotaz.
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:
VYTVOŘIT HLAVNÍ KLÍČ
mymasterkey
VYTVOŘIT OPRÁVNĚNÍ V RÁMCI DATABÁZE
mycredential
.Vytvořte mapu horizontálních oddílů představující datovou vrstvu pomocí klientské knihovny elastické databáze.
VYTVOŘIT EXTERNÍ ZDROJ DAT
mydatasource
typuSHARD_MAP_MANAGER
.VYTVOŘENÍ EXTERNÍ TABULKY
mytable
Po provedení těchto kroků můžete přistupovat k vodorovně 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 nad externími tabulkami v tomto připojení s omezeními popsanými dále v tomto článku. Další informace a příklady dotazů T-SQL najdete v článcích 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. 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ě účtují sazby 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 z SSMS nebo SSDT se zatím nepodporuje.
Import/export pro 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 pro zachování dočasných výsledků pomocí
SELECT <column_list> INTO <local_table>
nebo definování uložených procedur v databázi elastických dotazů, které odkazují na externí tabulky.Kromě nvarchar(max)nejsou v definicích externí tabulky podporované typy LOB (včetně prostorových typů). Jako alternativní řešení můžete vytvořit zobrazení ve vzdálené databázi, která přetypuje typ LOB na nvarchar(max), definujte externí tabulku místo základní tabulky a pak ji přetypujte zpět do původního typu LOB v dotazech.
Sloupce nvarchar(max) datového typu v sadě výsledků zakazují pokročilé dávkové techniky používané při 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 podporované 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í.
Související obsah
- Začínáme s dotazy napříč databázemi (vertikální dělení) (Preview)
- Dotazování napříč cloudovými databázemi s různými schématy (náhled)
- Sestava napříč cloudovými databázemi se škálováním na více systémů (Preview)
- Reportování v rámci škálovaných cloudových databází (Náhled)
-
sp_execute_remote (Azure SQL Database)