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
Aplikace Databáze Wingtip Tickets s více tenanty už musí být nasazená:
- Pokyny najdete v prvním kurzu, který představuje víceklientské databázové aplikace Wingtip Tickets SaaS:
Nasaďte a prozkoumejte horizontálně dělenou víceklientskou aplikaci, která používá Službu Azure SQL Database.- Proces nasazení běží méně než pět minut.
- Musíte mít nainstalovanou horizontálně dělenou verzi Wingtipu s více tenanty . Verze pro samostatnou databázi a databázi na tenanta tento kurz nepodporují.
- Pokyny najdete v prvním kurzu, který představuje víceklientské databázové aplikace Wingtip Tickets SaaS:
Musí být nainstalovaná nejnovější verze aplikace SQL Server Management Studio (SSMS). Stáhněte a nainstalujte SSMS.
Musí být nainstalovaný Azure PowerShell. Podrobnosti najdete v tématu Začínáme s Azure PowerShellem.
Ú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.
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ě.
- V prostředí PowerShell ISE otevřete ... \Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
- 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řipojte se k 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.
- Otevřete SSMS a připojte se k serveru tenanta:
tenants1-dpt-<user>.database.windows.net
. - Chcete-li potvrdit, že motocykly závodní a plavecký klub nejsou aktuálně zahrnuty, přejděte do
contosoconcerthall
databáze natenants1-dpt-<user>
serveru a dotazujte se naVenueTypes
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.
V nástroji SSMS se připojte k serveru tenanta:
tenants1-mt-<user>.database.windows.net
.Přejděte do
tenants1
databáze.Zadejte dotaz na
VenueTypes
tabulku, abyste potvrdili, že motocyklové závodní a plavecké kluby ještě nejsou v seznamu výsledků.Připojte se k serveru katalogu, což je
catalog-mt-<user>.database.windows.net
.Připojte se k
jobagent
databázi na serveru katalogu.V nástroji SSMS otevřete soubor ...\Learning Modules\Schema Management\DeployReferenceData.sql.
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.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í.
- Toto je
- Typ cílového člena databáze pro databázi šablony (
basetenantdb
), která se nachází nacatalog-mt-<user>
serveru, - Typ cílového člena
adhocreporting
databáze, který bude obsahovat databázi použitou v pozdějším kurzu.
- Typ cílového člena serveru .
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.
V nástroji SSMS se připojte k
jobagent
databázi nacatalog-mt-<user>.database.windows.net
serveru.V nástroji SSMS otevřete ...\Learning Modules\Schema Management\OnlineReindex.sql.
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ů.