Sdílet prostřednictvím


Správa schématu v aplikaci SaaS, která používá horizontálně dělené víceklientské databáze

Platí pro:Azure SQL Database

Tento kurz zkoumá výzvy při údržbě flotily databází v aplikaci SaaS (Software as a Service). Řešení jsou ukázaná pro rozšíření změn schématu napříč vozovým parkem databází.

Stejně jako každá aplikace se aplikace Wingtip Tickets SaaS časem vyvíjí a bude vyžadovat změny v databázi. Změny můžou mít vliv na schéma nebo referenční data nebo použít úlohy údržby databáze. Když aplikace SaaS používá databázi na model tenanta, musí být změny sladěné v potenciálně masivním portfoliu databází tenantů. Kromě toho je nutné tyto změny začlenit do procesu zřizování databáze, aby se zajistilo, že budou zahrnuty do nových databází při jejich vytváření.

Dva scénáře

V tomto kurzu se seznámíte s následujícími dvěma scénáři:

  • Nasaďte aktualizace referenčních dat pro všechny tenanty.
  • Znovu sestavte index tabulky, která obsahuje referenční data.

Funkce elastických úloh služby Azure SQL Database slouží ke spouštění těchto operací napříč databázemi tenantů. Úlohy také pracují s databází tenanta "template". V ukázkové aplikaci Wingtip Tickets se tato databáze šablony zkopíruje a zřídí novou databázi tenanta.

V tomto kurzu se naučíte:

  • Vytvořte agenta úloh.
  • Spusťte dotaz T-SQL na více databázích tenantů.
  • Aktualizujte referenční data ve všech databázích tenantů.
  • Vytvořte index tabulky ve všech databázích tenantů.

Požadavky

Úvod do vzorů správy schémat SaaS

Model horizontálně dělené databáze s více tenanty používaný v této ukázce umožňuje databázi tenantů obsahovat jednoho nebo více tenantů. Tato ukázka zkoumá potenciál použití kombinace databází M tenantů a jednoklientů, což umožňuje hybridní model správy tenantů. Správa změn v těchto databázích může být složitá. Elastické úlohy usnadňují správu a správu velkého počtu databází. Úlohy umožňují bezpečně a spolehlivě spouštět skripty Transact-SQL jako úlohy ve skupině databází tenantů. Úlohy jsou nezávislé na interakci nebo vstupu uživatele. Tuto metodu lze použít k nasazení změn schématu nebo do běžných referenčních dat napříč všemi tenanty v aplikaci. Elastické úlohy lze také použít k údržbě zlaté kopie šablony databáze. Šablona se používá k vytváření nových tenantů a vždy zajišťuje použití nejnovějších schémat a referenčních dat.

screen

Elastické úlohy

V roce 2024 byly elastické úlohy vydány jako obecně dostupný produkt s novými funkcemi. Integrovaná funkce Azure SQL Database najdete v úlohách elastické databáze.

Získání zdrojového kódu a skriptů databázové aplikace SaaS s více tenanty Wingtip Tickets

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

Vytvoření databáze agenta úloh a nového agenta úloh

Tento kurz vyžaduje, abyste k vytvoření databáze agenta úloh a agenta úloh použili PowerShell. msdb Stejně jako databáze používaná agentem SQL používá agent úloh databázi ve službě Azure SQL Database k ukládání definic úloh, stavu úlohy a historie. Po vytvoření agenta úloh můžete úlohy vytvářet a monitorovat okamžitě.

  1. V prostředí PowerShell ISE otevřete ...\Učení Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Stisknutím klávesy F5 spusťte skript.

Skript Demo-SchemaManagement.ps1 volá skript Deploy-SchemaManagement.ps1 pro vytvoření databáze pojmenované jobagent na serveru katalogu. Skript pak vytvoří agenta úlohy a předá jobagent databázi jako parametr.

Vytvoření úlohy, která u všech tenantů nasadí nová referenční data

Příprava

Databáze každého tenanta obsahuje sadu typů míst v tabulce VenueTypes . Každý typ místa definuje druh událostí, které lze hostovat v místě konání. Tyto typy míst odpovídají obrázkům na pozadí, které vidíte v aplikaci událostí tenanta. V tomto cvičení nasadíte aktualizaci do všech databází a přidáte dva další typy míst: Motocyklové závodní a plavecké kluby.

Nejprve zkontrolujte typy míst, které jsou součástí každé databáze tenanta. Připojení do jedné z databází tenantů v aplikaci SQL Server Management Studio (SSMS) a prohlédněte VenueTypes si tabulku. Tuto tabulku můžete dotazovat také v editoru dotazů na webu Azure Portal, ke které se dostanete ze stránky databáze.

  1. Otevřete SSMS a připojte se k serveru tenanta: tenants1-dpt-<user>.database.windows.net.
  2. Chcete-li potvrdit, že motocykly závodní a plavecký klubnejsou aktuálně zahrnuty, přejděte do contosoconcerthall databáze na tenants1-dpt-<user> serveru a dotazujte se na VenueTypes tabulku.

Kroky

Teď vytvoříte úlohu, která aktualizuje VenueTypes tabulku v každé databázi tenantů přidáním dvou nových typů míst.

K vytvoření nové úlohy použijete sadu systémových uložených procedur systému úloh, které byly vytvořeny v jobagent databázi. Uložené procedury byly vytvořeny při vytvoření agenta úloh.

  1. V nástroji SSMS se připojte k serveru tenanta: tenants1-mt-<user>.database.windows.net.

  2. Přejděte do tenants1 databáze.

  3. Zadejte dotaz na VenueTypes tabulku, abyste potvrdili, že motocyklové závodní a plavecké kluby ještě nejsou v seznamu výsledků.

  4. Připojení na server katalogu, což je catalog-mt-<user>.database.windows.net.

  5. Připojení databázi jobagent na serveru katalogu.

  6. V nástroji SSMS otevřete soubor ...\Učení Modules\Schema Management\DeployReferenceData.sql.

  7. Upravte příkaz: set @User = <user> a nahraďte hodnotu uživatele použitou při nasazení aplikace SaaS Tickets SaaS s více tenanty.

  8. Stisknutím klávesy F5 spusťte skript.

Pozorovat

V DeployReferenceData.sql skriptu sledujte následující položky:

  • sp_add_target_group vytvoří cílovou skupinu DemoServerGroup a přidá do ní cílové členy.

  • sp_add_target_group_member přidá následující položky:

    • Typ cílového člena serveru .
      • Toto je tenants1-mt-<user> server, který obsahuje databáze tenantů.
      • Zahrnutí serveru zahrnuje databáze tenantů, které existují v době, kdy se úloha spustí.
    • Typ cílového člena databáze pro databázi šablony (basetenantdb), která se nachází na catalog-mt-<user> serveru,
    • Typ cílového člena adhocreporting databáze, který bude obsahovat databázi použitou v pozdějším kurzu.
  • sp_add_job vytvoří úlohu s názvem Nasazení referenčních dat.

  • sp_add_jobstep vytvoří krok úlohy obsahující text příkazu T-SQL pro aktualizaci referenční tabulky. VenueTypes

  • Zbývající pohledy ve skriptu zobrazují existující objekty a monitorují provádění úlohy. Pomocí těchto dotazů zkontrolujte hodnotu stavu ve sloupci životního cyklu a určete, kdy se úloha dokončila. Úloha aktualizuje databázi tenantů a aktualizuje dvě další databáze, které obsahují referenční tabulku.

V nástroji SSMS přejděte na server k databázi tenanta tenants1-mt-<user> . Odešlete dotaz na VenueTypes tabulku, abyste potvrdili, že jsou nyní do tabulky přidány motocyklové závodní a plavecké kluby . Celkový počettypůch

Vytvoření úlohy pro správu indexu referenční tabulky

Toto cvičení vytvoří úlohu pro opětovné sestavení indexu v primárním klíči referenční tabulky ve všech databázích tenantů. Opětovné sestavení indexu je typická operace správy databáze, kterou může správce spustit po načtení velkého množství dat, aby se zlepšil výkon.

  1. V nástroji SSMS se připojte k jobagent databázi na catalog-mt-<user>.database.windows.net serveru.

  2. V nástroji SSMS otevřete ...\Učení Modules\Schema Management\OnlineReindex.sql.

  3. Stisknutím klávesy F5 spusťte skript.

Pozorovat

V OnlineReindex.sql skriptu sledujte následující položky:

  • sp_add_job vytvoří novou úlohu s názvem Online Reindexovat PK__VenueTyp__265E44FD7FD4C885.

  • sp_add_jobstep vytvoří krok úlohy obsahující text příkazu T-SQL pro aktualizaci indexu.

  • Zbývající zobrazení ve spuštění úlohy monitorování skriptu. Pomocí těchto dotazů zkontrolujte hodnotu stavu ve lifecycle sloupci a určete, kdy se úloha úspěšně dokončila u všech členů cílové skupiny.

Další materiály

Další kroky

V tomto kurzu jste se naučili:

  • Vytvoření agenta úloh pro spouštění úloh T-SQL napříč několika databázemi
  • Aktualizace referenčních dat ve všech databázích tenantů
  • Vytvořit index tabulky ve všech databázích tenantů

Dále vyzkoušejte kurz ad hoc generování sestav a prozkoumejte spouštění distribuovaných dotazů napříč databázemi tenantů.