Sdílet prostřednictvím


Zřizování a katalog nových tenantů v aplikaci SaaS pomocí horizontálně dělené víceklientské služby Azure SQL Database

Platí pro:Azure SQL Database

Tento článek se zabývá zřizováním a katalogováním nových tenantů v modelu nebo vzoru horizontálně dělené databáze s více tenanty.

Tento článek má dvě hlavní části:

  • Koncepční diskuze o zřizování a katalogu nových tenantů

  • Kurz , který zvýrazňuje kód skriptu PowerShellu, který provádí zřizování a katalogování

    • Tento kurz používá aplikaci Wingtip Tickets SaaS přizpůsobenou modelu horizontálně dělené databáze s více tenanty.

Model databáze

Tato část obsahuje několik dalších témat, které jsou popsány v konceptech modelu horizontálně dělené databáze s více tenanty.

V tomto modelu s horizontálním dělením s více tenanty zahrnují schémata tabulek v každé databázi klíč tenanta v primárním klíči tabulek, které ukládají data tenanta. Klíč tenanta umožňuje každé jednotlivé databázi ukládat 0, 1 nebo mnoho tenantů. Použití horizontálně dělených databází usnadňuje aplikačnímu systému podporu velmi velkého počtu tenantů. Všechna data pro každého tenanta jsou uložená v jedné databázi. Velký počet tenantů se distribuuje napříč mnoha horizontálně dělenými databázemi. Databáze katalogu ukládá mapování každého tenanta na jeho databázi.

Izolace versus nižší náklady

Tenant, který má celou databázi, má výhody izolace. Tenant může mít databázi obnovenou na dřívější datum, aniž by byla omezena dopadem na ostatní tenanty. Výkon databáze je možné ladit tak, aby se optimalizoval pro jednoho tenanta, aniž byste museli ohrozit jiné tenanty. Problémem je, že izolace stojí více než náklady na sdílení databáze s jinými tenanty.

Když je nový tenant zřízený, může sdílet databázi s jinými tenanty nebo ji lze umístit do vlastní nové databáze. Později můžete změnit názor a přesunout databázi do jiné situace.

Databáze s více tenanty a jedním tenantem jsou smíšené ve stejné aplikaci SaaS, aby se optimalizovaly náklady nebo izolace pro každého tenanta.

Sharded multi-tenant database app with tenant catalog

Model katalogu tenantů

Pokud máte dvě nebo více databází, které obsahují aspoň jednoho tenanta, musí mít aplikace způsob, jak zjistit, která databáze ukládá tenanta aktuálního zájmu. Databáze katalogu toto mapování ukládá.

Klíč tenanta

Pro každého tenanta může aplikace Wingtip odvodit jedinečný klíč, což je klíč tenanta. Aplikace extrahuje název tenanta z adresy URL webové stránky. Aplikace zatřiďuje název pro získání klíče. Aplikace používá klíč pro přístup k katalogu. Katalog křížově odkazuje na informace o databázi, ve které je tenant uložen. Aplikace používá k připojení informace o databázi. Můžete také použít jiná schémata klíčů tenanta.

Použití katalogu umožňuje po zřízení změnit název nebo umístění databáze tenanta bez narušení aplikace. V modelu databáze s více tenanty katalog přizpůsobí přesun tenanta mezi databázemi.

Metadata tenanta nad rámec umístění

Katalog může také označit, jestli je tenant offline pro údržbu nebo jiné akce. Katalog lze rozšířit tak, aby ukládaly další metadata tenanta nebo databáze, například následující položky:

  • Úroveň služby nebo edice databáze.
  • Verze schématu databáze.
  • Název tenanta a jeho smlouva SLA (smlouva o úrovni služeb).
  • Informace o povolení správy aplikací, zákaznické podpory nebo procesů DevOps

Katalog lze také použít k povolení generování sestav mezi tenanty, správy schémat a extrakce dat pro účely analýzy.

Klientská knihovna Elastic Database

V wingtipu se katalog implementuje v databázi tenantcatalog . Tenantcatalog se vytvoří pomocí funkcí správy horizontálních oddílů klientské knihovny elastické databáze (EDCL). Knihovna umožňuje aplikaci vytvářet, spravovat a používat mapu horizontálních oddílů uloženou v databázi. Mapa horizontálních oddílů křížově odkazuje na klíč tenanta s horizontálním oddílem, což znamená jeho horizontálně dělenou databázi.

Během zřizování tenanta je možné použít funkce EDCL z aplikací nebo skriptů PowerShellu k vytvoření položek v mapě horizontálních oddílů. Později se funkce EDCL dají použít k připojení ke správné databázi. EDCL ukládá informace o připojení do mezipaměti, aby minimalizoval provoz v databázi katalogu a urychlil proces připojení.

Důležité

Neupravujte data v databázi katalogu prostřednictvím přímého přístupu! Přímé aktualizace nejsou podporovány kvůli vysokému riziku poškození dat. Místo toho upravte data mapování pouze pomocí rozhraní API EDCL.

Model zřizování tenantů

Kontrolní seznam

Pokud chcete zřídit nového tenanta do existující sdílené databáze, musíte položit následující otázky:

  • Zbývá pro nového tenanta dostatek místa?
  • Obsahuje tabulky s potřebnými referenčními daty pro nového tenanta nebo je lze přidat?
  • Má pro nového tenanta odpovídající variantu základního schématu?
  • Nachází se v příslušné geografické lokalitě blízko nového tenanta?
  • Je pro nového tenanta na správné úrovni služby?

Pokud chcete, aby byl nový tenant izolovaný ve své vlastní databázi, můžete ho vytvořit tak, aby splňoval specifikace tenanta.

Po dokončení zřizování musíte tenanta zaregistrovat v katalogu. Nakonec je možné přidat mapování tenanta, které odkazuje na příslušný horizontální oddíl.

Databáze šablon

Zřiďte databázi spuštěním skriptů SQL, nasazením souboru bacpac nebo zkopírováním databáze šablony. Aplikace Wingtip zkopírují databázi šablony a vytvoří nové databáze tenantů.

Stejně jako každá aplikace se Wingtip v průběhu času bude vyvíjet. V čase bude Wingtip vyžadovat změny databáze. Změny můžou zahrnovat následující položky:

  • Nové nebo změněné schéma
  • Nová nebo změněná referenční data
  • Rutinní úlohy údržby databáze pro zajištění optimálního výkonu aplikace

U SaaS aplikace musí být tyto změny nasazeny koordinovaně u potenciálně velkého počtu klientských databází. Aby tyto změny byly v budoucích databázích tenantů, je potřeba je začlenit do procesu zřizování. Tento problém je podrobněji prozkoumány v kurzu správy schématu.

Skripty

Skripty zřizování tenanta v tomto kurzu podporují oba následující scénáře:

  • Zřízení tenanta do existující databáze sdílené s jinými tenanty
  • Zřízení tenanta do vlastní databáze

Data tenanta se pak inicializují a zaregistrují v mapě horizontálních oddílů katalogu. V ukázkové aplikaci mají databáze, které obsahují více tenantů, obecný název, například tenants1 nebo tenants2. Databáze, které obsahují jednoho tenanta, mají název tenanta. Konkrétní zásady vytváření názvů použité v ukázce nejsou důležitou součástí vzoru, protože použití katalogu umožňuje přiřazení libovolného názvu k databázi.

Kurz začíná

V tomto kurzu se naučíte:

  • Zřízení tenanta do databáze s více tenanty
  • Zřízení tenanta do databáze s jedním tenantem
  • Zřízení dávky tenantů do databází s více tenanty i databází s jedním tenantem
  • Registrace databáze a mapování tenanta v katalogu

Požadavky

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

Zřízení tenanta do databáze sdílené s jinými tenanty

V této části se zobrazí seznam hlavních akcí pro zřizování, které provádějí skripty PowerShellu. Potom pomocí ladicího programu integrovaného skriptů (ISE) v PowerShellu můžete procházet skripty, abyste viděli akce v kódu.

Hlavní akce zřizování

Toto jsou klíčové prvky pracovního postupu zřizování, který si projdete:

  • Výpočet nového klíče tenanta: K vytvoření klíče tenanta z názvu tenanta se použije funkce hash.

  • Zkontrolujte, jestli klíč tenanta již existuje: Katalog je zaškrtnutý a ujistěte se, že klíč ještě není zaregistrovaný.

  • Inicializace tenanta ve výchozí databázi tenanta: Databáze tenanta se aktualizuje a přidá nové informace o tenantovi.

  • Zaregistrovat tenanta v katalogu: Mapování mezi novým klíčem tenanta a existující databází tenants1 se přidá do katalogu.

  • Přidejte název tenanta do tabulky rozšíření katalogu: Název místa se přidá do tabulky Tenants v katalogu. Tento doplněk ukazuje, jak je možné rozšířit databázi katalogu tak, aby podporovala další data specifická pro aplikaci.

  • Otevřít stránku Události pro nového tenanta: Stránka událostí Bushwillow Blues se otevře v prohlížeči.

    Screenshot that shows the Events page for a new tenant.

Kroky ladicího programu

Abyste pochopili, jak aplikace Wingtip implementuje nové zřizování tenantů ve sdílené databázi, přidejte zarážku a projděte si pracovní postup:

  1. V prostředí PowerShell ISE otevřete ...\Učení Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 a nastavte následující parametry:

    • = $TenantName Bushwillow Blues, název nového místa konání.
    • = $VenueType blues, jeden z předdefinovaných typů míst: blues, classicmusic, dance, jazz, judo, motorracing, multipurpose, opera, rockmusic, fotbal (malá písmena, bez mezer).
    • = $DemoScenario 1 pro zřízení tenanta ve sdílené databázi s jinými tenanty.
  2. Přidejte zarážku tak, že umístíte kurzor kamkoli na řádek 38, řádek s textem New-Tenant (Nový tenant) a pak stisknete klávesu F9.

    Screenshot that highlights the line that includes New Tenant.

  3. Spusťte skript stisknutím klávesy F5.

  4. Po zastavení spuštění skriptu na zarážce stiskněte klávesu F11 a přejděte do kódu.

    Screenshot shows the Windows PowerShell ISE with the Debug menu open and Step Into selected.

  5. Trasování spuštění skriptu pomocí možností nabídky Ladění F10 a F11 pro krokování nebo volání funkcí.

Další informace o ladění skriptů PowerShellu najdete v tématu Tipy o práci se skripty PowerShellu a ladění.

Zřízení tenanta ve vlastní databázi

Hlavní akce zřizování

Toto jsou klíčové prvky pracovního postupu, který projdete při trasování skriptu:

  • Výpočet nového klíče tenanta: K vytvoření klíče tenanta z názvu tenanta se použije funkce hash.

  • Zkontrolujte, jestli klíč tenanta již existuje: Katalog je zaškrtnutý a ujistěte se, že klíč ještě není zaregistrovaný.

  • Vytvořte novou databázi tenanta: Databáze se vytvoří zkopírováním databáze basetenantdb pomocí šablony Resource Manageru. Nový název databáze je založený na názvu tenanta.

  • Přidání databáze do katalogu: Nová databáze tenanta je zaregistrovaná jako horizontální oddíl v katalogu.

  • Inicializace tenanta ve výchozí databázi tenanta: Databáze tenanta se aktualizuje a přidá nové informace o tenantovi.

  • Zaregistrovat tenanta v katalogu: Mapování mezi novým klíčem tenanta a databází sequoiasoccer se přidá do katalogu.

  • Název tenanta se přidá do katalogu: Název místa se přidá do tabulky rozšíření Tenants v katalogu.

  • Otevřít stránku Události nového tenanta: Stránka Sequoia Soccer Events je otevřena v prohlížeči.

    events

Kroky ladicího programu

Teď si projděte proces skriptu při vytváření tenanta ve vlastní databázi:

  1. Stále v souboru ...\Učení Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 nastavte následující parametry:

    • = $TenantName Sequoia Soccer, název nového místa.
    • = $VenueType fotbal, jeden z předdefinovaných typů míst: blues, classicmusic, dance, jazz, judo, motorracing, multipurpose, opera, rockmusic, fotbal (malá písmena, bez mezer).
    • = $DemoScenario 2 pro zřízení tenanta do vlastní databáze.
  2. Přidejte novou zarážku tak, že umístíte kurzor kamkoli na řádek 57, řádek s textem: &$PSScriptRoot\New-TenantAndDatabase ' a stiskněte klávesu F9.

    break point

  3. Spusťte skript stisknutím klávesy F5.

  4. Jakmile se spuštění skriptu zastaví na zarážce, stiskněte klávesu F11 a přejděte do kódu. Pomocí F10 a F11 můžete přejít k funkcím a přejít k jejich kroku, abyste mohli sledovat provádění.

Zřízení dávky tenantů

Toto cvičení zřídí dávku 17 tenantů. Než začnete s dalšími kurzy Wingtip Tickets, doporučujeme zřídit tuto dávku tenantů, abyste mohli pracovat s více databázemi.

  1. V prostředí PowerShell ISE otevřete ...\Učení Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 a změňte parametr $DemoScenario na 4:

    • = $DemoScenario 4 pro zřízení dávky tenantů do sdílené databáze.
  2. Stiskněte F5 a spusťte skript.

Ověření nasazené sady tenantů

V této fázi máte kombinaci tenantů nasazených do sdílené databáze a tenantů nasazených do vlastních databází. Azure Portal je možné použít ke kontrole vytvořených databází. Na webu Azure Portal otevřete server tenants1-mt-USER<> tak, že přejdete na seznam SERVERŮ SQL. Seznam databází SQL by měl zahrnovat databázi sdílených tenantů1 a databáze pro tenanty, kteří jsou ve své vlastní databázi:

Screenshot of the tenants1-mt-USER server Overview page that highlights the databases.

Azure Portal sice zobrazuje databáze tenantů, ale neumožňuje zobrazit tenanty ve sdílené databázi. Úplný seznam tenantů najdete na webové stránce centra událostí wingtipu a procházením katalogu.

Stránka centra událostí Wingtip Tickets

Otevřete stránku Centra událostí v prohlížeči (http:events.wingtip-mt.<USER.trafficmanager.net>)

Použití databáze katalogu

Úplný seznam tenantů a odpovídající databáze pro každý z nich jsou k dispozici v katalogu. Zobrazí se SQL, které připojí název tenanta k názvu databáze. Zobrazení pěkně ukazuje hodnotu rozšíření metadat uložených v katalogu.

  • Zobrazení SQL je k dispozici v databázi tenantcatalog.
  • Název tenanta je uložený v tabulce Tenants.
  • Název databáze je uložen v tabulkách správy horizontálních oddílů.
  1. V aplikaci SQL Server Management Studio (SSMS) se připojte k serveru tenantů na webu catalog-mt.<USER.database.windows.net>, with Login = developer, and Password = P@ssword1

    SSMS connection dialog

  2. V nástroji SSMS Průzkumník objektů přejděte do zobrazení v databázi tenantcatalog.

  3. Klikněte pravým tlačítkem na zobrazení TenantsExtended a zvolte Vybrat prvních 1000 řádků. Všimněte si mapování mezi názvem tenanta a databází pro různé tenanty.

    ExtendedTenants view in SSMS

Další způsoby zřizování

Tato část popisuje další zajímavé vzory zřizování.

Předběžné zřizování databází v elastických fondech

Vzor předběžného zřizování využívá skutečnost, že při použití elastických fondů je fakturace fondu, nikoli databází. Proto je možné databáze přidat do elastického fondu dříve, než budou potřeba, aniž by se vám zaúčtovaly další náklady. Toto předběžné zpracování výrazně zkracuje dobu potřebnou ke zřízení tenanta do databáze. Počet předem zřízených databází je možné podle potřeby upravit, aby byla vyrovnávací paměť vhodná pro očekávanou míru zřizování.

Automatické zřizování

V modelu automatického zřizování se vyhrazená služba zřizování používá k automatickému zřizování serverů, fondů a databází podle potřeby. Tato automatizace zahrnuje předběžné zřizování databází v elastických fondech. A pokud se databáze vyřadí z provozu a odstraní, dají se mezery, které vytvoří v elastických fondech, vyplnit podle potřeby služba zřizování.

Tento typ automatizované služby může být jednoduchý nebo složitý. Automatizace může například zpracovávat zřizování v různých geografických oblastech a může nastavit geografickou replikaci pro zotavení po havárii. S modelem automatického zřizování by klientská aplikace nebo skript odeslaly žádost o zřizování do fronty, kterou bude zpracovávat služba zřizování. Skript by se pak dotazoval na zjištění dokončení. Pokud se použije předběžné zřizování, požadavky se zpracují rychle, zatímco služba na pozadí bude spravovat zřizování náhradní databáze.

Další materiály

Další kroky

V tomto kurzu jste se naučili:

  • Zřízení jednoho nového tenanta do sdílené databáze s více tenanty a její vlastní databáze
  • Zřídit dávku dalších tenantů.
  • Podrobné informace o zřizování tenantů a jejich registraci do katalogu

Vyzkoušejte kurz monitorování výkonu.