Generování sestav mezi tenanty pomocí distribuovaných dotazů

Platí pro:Azure SQL Database

V tomto kurzu spustíte distribuované dotazy napříč celou sadou databází tenantů pro vytváření sestav. Tyto dotazy mohou extrahovat přehledy uložené v každodenních provozních datech tenantů Wingtip Tickets SaaS. K tomu nasadíte další databázi sestav na server katalogu a použijete Elastic Query k povolení distribuovaných dotazů.

V tomto kurzu se dozvíte:

  • Postup nasazení databáze pro vytváření sestav
  • Spouštění distribuovaných dotazů napříč všemi databázemi tenantů
  • Jak globální zobrazení v každé databázi umožňují efektivní dotazování napříč tenanty

Předpokladem dokončení tohoto kurzu je splnění následujících požadavků:

Model generování sestav mezi tenanty

cross-tenant distributed query pattern

Jednou z příležitostí aplikací SaaS je využít obrovské množství dat tenantů uložených v cloudu k získání přehledu o provozu a využití vaší aplikace. Tyto přehledy můžou vést k vývoji funkcí, vylepšení použitelnosti a dalším investicím do vašich aplikací a služeb.

V jedné databázi s více tenanty je přístup k těmto datům jednoduchý, ale třeba v případě distribuce mezi tisícovky databází se situace komplikuje. Jedním z přístupů je použití elastického dotazu, který umožňuje dotazování napříč distribuovanou sadou databází se společným schématem. Tyto databáze je možné distribuovat mezi různé skupiny prostředků a předplatná, ale potřebují sdílet společné přihlášení. Elastic Query používá jednoúčelovou databázi, ve které jsou definovány externí tabulky, které zrcadlí tabulky nebo zobrazení v distribuovaných (tenantových) databázích. Dotazy odeslané do této hlavní databáze se kompilují a vzniká plán distribuovaného dotazu, který zajistí předávání částí dotazu potřebným tenantským databázím. Elastic Query používá mapování horizontálních oddílů v databázi katalogu k určení umístění všech databází tenantů. Nastavení a dotazování hlavní databáze jsou jednoduché pomocí standardního jazyka Transact-SQL a podporují dotazování z nástrojů, jako jsou Power BI a Excel.

Díky distribuci dotazů napříč databázemi tenantů poskytuje Elastic Query okamžitý přehled o živých produkčních datech. Vzhledem k tomu, že elastický dotaz načítá data z potenciálně mnoha databází, může být latence dotazů vyšší než ekvivalentní dotazy odeslané do jedné databáze s více tenanty. Navrhujte dotazy tak, aby se minimalizovala data vrácená do hlavní databáze. ElasticKý dotaz je často nejvhodnější pro dotazování malých objemů dat v reálném čase, nikoli k vytváření často používaných nebo složitých analytických dotazů nebo sestav. Pokud dotazy nefungují dobře, podívejte se do plánu provádění a zjistěte, jaká část dotazu se odešle do vzdálené databáze a kolik dat se vrací. Dotazy, které vyžadují komplexní agregaci nebo analytické zpracování, můžou lépe zpracovávat extrahováním dat tenanta do databáze nebo datového skladu optimalizovaného pro analytické dotazy. Tento model je vysvětlený v kurzu analýzy tenanta.

Získání skriptů aplikace SaaS typu Wingtip Tickets pro jednotlivé tenanty

Skripty a zdrojový kód aplikace Wingtip Tickets SaaS pro víceklientské databáze a zdrojový kód aplikace jsou k dispozici v úložišti WingtipTicketsSaaSaSaS-DbPerTenant na GitHubu. V obecných doprovodných materiálech najdete pokyny ke stažení a odblokování skriptů SaaS pro Wingtip Tickets.

Vytvoření prodejních dat lístku

Pokud chcete spouštět dotazy na zajímavější datovou sadu, vytvořte prodejní data lístku spuštěním generátoru lístků.

  1. V prostředí PowerShell ISE otevřete skript ...\Učení Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 a nastavte následující hodnotu:
    • $DemoScenario = 1, Koupit vstupenky na akce ve všech prostorách.
  2. Stisknutím klávesy F5 spusťte skript a vygenerujte prodej lístku. Zatímco skript běží, pokračujte kroky v tomto kurzu. Data lístku se dotazují v části Spustit ad hoc distribuované dotazy , takže počkejte na dokončení generátoru lístků.

Prozkoumání globálních zobrazení

V aplikaci SaaS Database Wingtip Tickets na tenanta má každý tenant databázi. Data obsažená v databázových tabulkách jsou tedy vymezena na perspektivu jednoho tenanta. Při dotazování napříč všemi databázemi je ale důležité, aby elastický dotaz mohl s daty zacházet, jako by byl součástí jedné logické databáze dělené podle tenanta.

Pro simulaci tohoto vzoru se do databáze tenanta přidá sada globálních zobrazení, která projektují ID tenanta do každé z tabulek, které se dotazují globálně. Například zobrazení VenueEvents přidá vypočítané VenueId do sloupců promítaných z tabulky Events. Podobně zobrazení VenueTicketPurchases a VenueTickets přidávají vypočítaný sloupec VenueId promítaný z příslušných tabulek. Tato zobrazení používá Elastic Query k paralelizaci dotazů a jejich odeslání do příslušné vzdálené databáze tenanta, když je k dispozici sloupec VenueId . Tím se výrazně sníží množství vrácených dat a výrazně se zvýší výkon mnoha dotazů. Tato globální zobrazení byla předem vytvořena ve všech databázích tenantů.

  1. Otevřete SSMS a připojte se k serveru tenants1-USER<>.

  2. Rozbalte databáze, klikněte pravým tlačítkem na contosoconcerthall a vyberte Nový dotaz.

  3. Spuštěním následujících dotazů prozkoumejte rozdíl mezi tabulkami s jedním tenantem a globálními zobrazeními:

    -- The base Venue table, that has no VenueId associated.
    SELECT * FROM Venue
    
    -- Notice the plural name 'Venues'. This view projects a VenueId column.
    SELECT * FROM Venues
    
    -- The base Events table, which has no VenueId column.
    SELECT * FROM Events
    
    -- This view projects the VenueId retrieved from the Venues table.
    SELECT * FROM VenueEvents
    

V těchtozobrazeních Tento přístup je podobný způsobu, jakým se klíč tenanta počítá pro použití v katalogu.

Prozkoumání definice zobrazení Místa konání :

  1. V Průzkumník objektů rozbalte zobrazení contosoconcerthall>:

    Screenshot shows the contents of the Views node, including four types of Venue d b o.

  2. Klikněte pravým tlačítkem na dbo. Místa konání.

  3. Výběr zobrazení skriptu jako>CREATE do>nového okna Editor Power Query

Vytvořte skript libovolného z ostatních zobrazení místa konání , abyste viděli, jak přidat VenueId.

Nasazení databáze používané pro distribuované dotazy

Toto cvičení nasadí databázi adhocreportingu . Toto je hlavní databáze, která obsahuje schéma používané k dotazování napříč všemi databázemi tenantů. Databáze se nasadí na existující server katalogu, což je server používaný pro všechny databáze související se správou v ukázkové aplikaci.

  1. V prostředí PowerShell ISE otevřete ...\Učení Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1.

  2. Nastavte $DemoScenario = 2, nasaďte databázi ad hoc generování sestav.

  3. Stisknutím klávesy F5 spusťte skript a vytvořte databázi adhocreportingu.

V další části přidáte do databáze schéma, aby bylo možné ho použít ke spouštění distribuovaných dotazů.

Konfigurace hlavní databáze pro spouštění distribuovaných dotazů

Toto cvičení přidá do databáze adhocreportingu schéma (externí zdroj dat a definice externích tabulek), aby bylo možné provádět dotazy napříč všemi databázemi tenantů.

  1. Otevřete APLIKACI SQL Server Management Studio a připojte se k databázi adhoc reporting, kterou jste vytvořili v předchozím kroku. Název databáze je adhocreporting.

  2. Otevřete soubor ...\Učení Modules\Operational Analytics\Adhoc Reporting\ Initialize-AdhocReportingDB.sql v SSMS.

  3. Projděte si skript SQL a poznamenejte si:

    Elastic Query používá přihlašovací údaje v oboru databáze pro přístup ke každé z databází tenantů. Tyto přihlašovací údaje musí být dostupné ve všech databázích a obvykle by měly mít udělená minimální práva potřebná k povolení těchto dotazů.

    create credential

    S databází katalogu jako externím zdrojem dat se dotazy distribuují do všech databází registrovaných v katalogu v době spuštění dotazu. Vzhledem k tomu, že se názvy serverů pro každé nasazení liší, získá tento skript umístění databáze katalogu z aktuálního serveru (@@servername), kde se skript spustí.

    create external data source

    Externí tabulky, které odkazují na globální zobrazení popsaná v předchozí části, a definované pomocí DISTRIBUTION = SHARDED(VenueId). Vzhledem k tomu, že každý VenueId se mapuje na jednotlivé databáze, zlepšuje výkon pro mnoho scénářů, jak je znázorněno v další části.

    create external tables

    Místní tabulka VenueTypes , která se vytvoří a naplní. Tato tabulka referenčních dat je společná ve všech databázích tenantů, takže ji lze zde reprezentovat jako místní tabulku a naplnit běžnými daty. U některýchdotazůch

    create table

    Pokud tímto způsobem zahrnete referenční tabulky, nezapomeňte aktualizovat schéma tabulky a data při každé aktualizaci databází tenanta.

  4. Stisknutím klávesy F5 spusťte skript a inicializujete databázi adhocreportingu.

Teď můžete spouštět distribuované dotazy a shromažďovat přehledy napříč všemi tenanty.

Spouštění distribuovaných dotazů

Teď, když je databáze adhocreportingu nastavená, spusťte některé distribuované dotazy. Zahrňte plán provádění, který vám pomůže lépe porozumět tomu, kde probíhá zpracování dotazů.

Při kontrole plánu provádění najeďte myší na ikony plánu, kde najdete podrobnosti.

Je důležité poznamenat, že nastavení DISTRIBUTION = SHARDED(VenueId) při definování externího zdroje dat zlepšuje výkon pro mnoho scénářů. Vzhledem k tomu, že každý VenueId se mapuje na jednotlivé databáze, filtrování se snadno provádí vzdáleně a vrací jenom potřebná data.

  1. Otevřete soubor ...\Učení Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReportingQueries.sql v SSMS.

  2. Ujistěte se, že jste připojení k databázi adhocreportingu .

  3. Vyberte nabídku Dotaz a klikněte na Zahrnout skutečný plán provádění.

  4. Zvýrazněte dotaz, které místa jsou aktuálně zaregistrována? a stiskněte klávesu F5.

    Dotaz vrátí celý seznam míst, který ilustruje, jak rychle a snadno se dotazuje napříč všemi tenanty a vrací data z každého tenanta.

    Zkontrolujte plán a podívejte se, že celkové náklady jsou ve vzdáleném dotazu. Každá databáze tenanta provede dotaz vzdáleně a vrátí informace o místě do hlavní databáze.

    SELECT * FROM dbo.Venues

  5. Vyberte další dotaz a stiskněte klávesu F5.

    Tento dotaz spojí data z databází tenanta a místní tabulky VenueTypes (místní, protože se jedná o tabulku v databázi adhocreportingu ).

    Zkontrolujte plán a zjistěte, že většina nákladů je vzdálený dotaz. Každá databáze tenanta vrátí informace o svém místě a provede místní spojení s místní tabulkou VenueTypes , aby se zobrazil popisný název.

    Join on remote and local data

  6. Teď vyberte dotaz On which day were the most tickets sold? query, and press F5.

    Tento dotaz dělá složitější spojování a agregaci. Většina zpracování probíhá vzdáleně. Do hlavní databáze se vrátí pouze jeden řádek obsahující denní počet prodejů vstupenek každého místa za den.

    query

Další kroky

V tomto kurzu jste se naučili:

  • Spouštění distribuovaných dotazů ve všech tenantských databázích
  • Nasaďte databázi generování sestav a definujte schéma potřebné ke spouštění distribuovaných dotazů.

Teď vyzkoušejte kurz Analýzy tenanta a prozkoumejte extrakci dat do samostatné analytické databáze pro složitější zpracování analýz.

Další materiály