Dela via


Lär dig hur du etablerar nya klienter och registrerar dem i katalogen

Gäller för:Azure SQL Database

I den här självstudien får du lära dig hur du etablerar och katalogiserar SaaS-mönster. Du får också lära dig hur de implementeras i Wingtip Tickets SaaS-databasen per klientorganisation. Du skapar och initierar nya klientdatabaser och registrerar dem i programmets klientkatalog. Katalogen är en databas som underhåller mappningen mellan SaaS-programmets många klienter och deras data. Katalogen spelar en viktig roll när det gäller att dirigera program- och hanteringsbegäranden till rätt databas.

I den här självstudien lär du dig att:

  • Etablera en enda ny klientorganisation.
  • Etablera en batch med ytterligare klienter.

Se till att följande förhandskrav är slutförda för att kunna slutföra den här guiden:

Introduktion till SaaS-katalogmönstret

I ett databasbaserat SaaS-program med flera klienter är det viktigt att veta var information för varje klient lagras. I SaaS-katalogmönstret används en katalogdatabas för att lagra mappningen mellan varje klientorganisation och databasen där deras data lagras. Det här mönstret gäller när klientdata distribueras över flera databaser.

Varje klientorganisation identifieras av en nyckel i katalogen, som mappas till platsen för deras databas. I wingtip-appen Biljetter skapas nyckeln från en hash av klientorganisationens namn. Med det här schemat kan appen konstruera nyckeln från klientnamnet som ingår i programmets URL. Andra klientnyckelscheman kan användas.

Katalogen tillåter att namnet eller platsen för databasen ändras med minimal påverkan på programmet. I en databasmodell med flera klienter kan den här funktionen även användas för att flytta en klientorganisation mellan databaser. Katalogen kan också användas för att ange om en klientorganisation eller databas är offline för underhåll eller andra åtgärder. Den här funktionen utforskas i självstudien Återställ enskild klientorganisation.

Katalogen kan också lagra ytterligare klient- eller databasmetadata, till exempel schemaversion, tjänstplan eller serviceavtal som erbjuds klientorganisationer. Katalogen kan lagra annan information som möjliggör programhantering, kundsupport eller DevOps.

Utöver SaaS-programmet kan katalogen aktivera databasverktyg. I exemplet Wingtip Tickets SaaS database-per-tenant används katalogen för att aktivera frågor mellan klientorganisationer, som utforskas i självstudien ad hoc-rapportering. Jobbhantering mellan databaser utforskas i självstudierna Schemahantering och Klientorganisationsanalys .

I Wingtip Tickets SaaS-exempel implementeras katalogen med hjälp av Shard Management-funktionerna i Elastic Database-klientbiblioteket (EDCL). EDCL är tillgängligt i Java och .NET Framework. EDCL gör det möjligt för ett program att skapa, hantera och använda en databasbaserad fragmentkarta.

En shardkarta innehåller en lista över shards (databaser) och mappningen mellan nycklar (klientorganisationer) och shards. EDCL-funktioner används under klientetablering för att skapa posterna i fragmentkartan. De används vid körning av program för att ansluta till rätt databas. EDCL cachelagrar anslutningsinformation för att minimera trafiken till katalogdatabasen och påskynda programmet.

Viktigt!

Mappningsdata är tillgängliga i katalogdatabasen, men redigera dem inte. Redigera endast mappningsdata med hjälp av API:er för Elastic Database-klientbiblioteket. Direkt manipulering av mappningsdata riskerar att skada katalogen och stöds inte.

Introduktion till SaaS-etableringsmönstret

När du lägger till en ny klientorganisation i ett SaaS-program som använder en databasmodell för en enda klientorganisation måste du etablera en ny klientdatabas. Databasen måste skapas på lämplig plats- och tjänstnivå. Den måste också initieras med rätt schema och referensdata. Och den måste vara registrerad i katalogen under lämplig klientnyckel.

Olika metoder för databasetablering kan användas. Du kan köra SQL-skript, distribuera en bacpac eller kopiera en malldatabas.

Databasetablering måste ingå i din strategi för schemahantering. Du måste se till att nya databaser etableras med det senaste schemat. Det här kravet utforskas i självstudien Schemahantering.

Wingtip Tickets-appen database-per-tenant etablerar nya klienter genom att kopiera en malldatabas med namnet basetenantdb, som distribueras på katalogservern. Etablering kan integreras i programmet som en del av en registreringsupplevelse. Det kan också stödjas offline med hjälp av skript. Den här självstudien utforskar etablering med hjälp av PowerShell.

Etableringsskript kopierar basetenantdb-databasen för att skapa en ny klientdatabas i en elastisk pool. Klientdatabasen skapas på klientservern som mappas till det nya DNS-aliaset . Det här aliaset upprätthåller en referens till den server som används för att etablera nya klienter och uppdateras så att den pekar på en återställningsklientserver i självstudierna för haveriberedskap (DR med georestore, DR med georeplication). Skripten initierar sedan databasen med klientspecifik information och registrerar den på katalogshardkartan. Klientdatabaser är förgivna namn baserat på klientorganisationens namn. Det här namngivningsschemat är inte en viktig del av mönstret. Katalogen mappar klientnyckeln till databasnamnet, så att alla namngivningskonventioner kan användas.

Hämta Wingtip Tickets SaaS-programskript för databas per klientorganisation

Wingtip Tickets SaaS-skript och programkällkod finns i WingtipTicketsSaaS-DbPerTenant GitHub-lagringsplatsen. Se den allmänna vägledningen för steg för att ladda ned och avblockera Wingtip Tickets SaaS-skript.

Etablera och katalogisera detaljerad genomgång

Om du vill förstå hur Wingtip Tickets-programmet implementerar ny klientetablering lägger du till en brytpunkt och följer arbetsflödet när du etablerar en klientorganisation.

  1. I PowerShell ISE öppnar du ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1 och anger följande parametrar:

    • $TenantName = namnet på den nya platsen (till exempel Bushwillow Blues).
    • $VenueType = en av de fördefinierade lokaltyperna: blues, klassiskmusisk, dans, jazz, judo, motorsport, multipurpose, opera, rockmusic, fotboll.
    • = $DemoScenario 1 etablerar du en enda klientorganisation.
  2. Om du vill lägga till en brytpunkt placerar du markören var som helst på raden med texten Ny klientorganisation . Tryck sedan på F9.

    Screenshot shows a script with New-Tenant highlighted for adding a breakpoint.

  3. Tryck på F5 för att köra skriptet.

  4. När skriptkörningen stoppas vid brytpunkten trycker du på F11 för att gå in i koden.

    Debugging

Spåra skriptets körning med hjälp av menyalternativen Felsök . Tryck på F10 och F11 för att gå över eller in i de anropade funktionerna. Mer information om felsökning av PowerShell-skript finns i Tips om hur du arbetar med och felsöker PowerShell-skript.

Du behöver inte uttryckligen följa det här arbetsflödet. Den förklarar hur du felsöker skriptet.

  • Importera modulen CatalogAndDatabaseManagement.psm1. Den tillhandahåller en katalog- och klientnivåabstraktion över Shard Management-funktionerna . Den här modulen kapslar in mycket av katalogmönstret och är värd att utforska.

  • Importera modulen SubscriptionManagement.psm1. Den innehåller funktioner för att logga in på Azure och välja den Azure-prenumeration som du vill arbeta med.

  • Hämta konfigurationsinformationen. Gå in på Get-Configuration med hjälp av F11 och se hur appkonfigurationen anges. Resursnamn och andra appspecifika värden definieras här. Ändra inte dessa värden förrän du är bekant med skripten.

  • Hämta katalogobjektet. Gå till Get-Catalog, som skriver och returnerar ett katalogobjekt som används i skriptet på högre nivå. Den här funktionen använder Shard Management-funktioner som importeras från AzureShardManagement.psm1. Katalogobjektet består av följande element:

    • $catalogServerFullyQualifiedName skapas med hjälp av standardstammen plus ditt användarnamn: catalog-user.database.windows<> .net.
    • $catalogDatabaseName hämtas från konfigurationen: tenantcatalog.
    • $shardMapManager-objektet initieras från katalogdatabasen.
    • $shardMap-objektet initieras från fragmentkartan tenantcatalog i katalogdatabasen. Ett katalogobjekt skapas och returneras. Den används i skriptet på högre nivå.
  • Beräkna den nya klientnyckeln. En hash-funktion används för att skapa klientnyckeln från klientnamnet.

  • Kontrollera om klientnyckeln redan finns. Katalogen är markerad för att kontrollera att nyckeln är tillgänglig.

  • Klientdatabasen etableras med New-TenantDatabase. Använd F11 för att gå in på hur databasen etableras med hjälp av en Azure Resource Manager-mall.

    Databasnamnet skapas från klientnamnet för att klargöra vilket fragment som tillhör vilken klient. Du kan också använda andra namngivningskonventioner för databaser. En Resource Manager-mall skapar en klientdatabas genom att kopiera en malldatabas (baseTenantDB) på katalogservern. Alternativt kan du skapa en databas och initiera den genom att importera ett bacpac. Eller så kan du köra ett initieringsskript från en välkänd plats.

    Resource Manager-mallen finns i mappen ...\Learning Modules\Common\ : tenantdatabasecopytemplate.json

  • Klientdatabasen initieras ytterligare. Platsens (klientorganisationens) namn och platstyp läggs till. Du kan också göra andra initieringar här.

  • Klientdatabasen är registrerad i katalogen. Den registreras med Add-TenantDatabaseToCatalog med hjälp av klientnyckeln. Använd F11 för att stega in i detaljerna:

    • Katalogdatabasen läggs till i fragmentkartan (listan över kända databaser).
    • Mappningen som länkar nyckelvärdet till fragmentet skapas.
    • Ytterligare metadata om klientorganisationen (platsens namn) läggs till i tabellen Klientorganisationer i katalogen. Tabellen Klientorganisationer är inte en del av Shard Management-schemat och installeras inte av EDCL. Den här tabellen visar hur katalogdatabasen kan utökas för att stödja ytterligare programspecifika data.

När etableringen är klar återgår körningen till det ursprungliga Demo-ProvisionAndCatalog-skriptet . Sidan Händelser öppnas för den nya klientorganisationen i webbläsaren.

Events page

Etablera en batch med klienter

Den här övningen etablerar en batch med 17 klienter. Vi rekommenderar att du etablerar den här batchen med klienter innan du startar andra Självstudier om Wingtip-biljetter i SaaS-databasen per klientorganisation. Det finns mer än bara några databaser att arbeta med.

  1. I PowerShell ISE öppnar du ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1. Ändra parametern $DemoScenario till 3:

    • = $DemoScenario 3 etablerar du en batch med klienter.
  2. Tryck på F5 för att köra skriptet.

Skriptet etablerar en batch med ytterligare klienter. Den använder en Azure Resource Manager-mall som styr batchen och delegerar etablering av varje databas till en länkad mall. Om du använder mallar på det här sättet, kan Azure Resource Manager mäkla etableringsprocessen för ditt skript. Mallarna etablerar databaser parallellt och hanterar återförsök om det behövs. Skriptet är idempotent, så om det misslyckas eller stoppas av någon anledning kör du det igen.

Verifiera batchen med klienter som har distribuerats

  • I Azure-portalen bläddrar du till din lista över servrar och öppnar klientorganisationen1-servern. Välj SQL-databaser och kontrollera att batchen med ytterligare 17 databaser nu finns i listan.

    Database list

Andra etableringsmönster

Andra etableringsmönster som inte ingår i den här självstudien:

Företableringsdatabaser: Företableringsmönstret utnyttjar det faktum att databaser i en elastisk pool inte lägger till extra kostnader. Faktureringen är för den elastiska poolen, inte för databaserna. Inaktiva databaser förbrukar inga resurser. Genom att företablera databaser i en pool och allokera dem vid behov kan du minska tiden för att lägga till klienter. Antalet företablerade databaser kan justeras efter behov för att behålla en buffert som är lämplig för den förväntade etableringstakten.

Automatisk etablering: I mönstret för automatisk etablering etablerar en etableringstjänst servrar, pooler och databaser automatiskt efter behov. Om du vill kan du inkludera företableringsdatabaser i elastiska pooler. Om databaser inaktiveras och tas bort kan luckor i elastiska pooler fyllas i av etableringstjänsten. En sådan tjänst kan vara enkel eller komplex, till exempel hantering av etablering över flera geografiska områden och konfiguration av geo-replikering för haveriberedskap.

Med mönstret för automatisk etablering skickar ett klientprogram eller skript en etableringsbegäran till en kö som ska bearbetas av etableringstjänsten. Den avsöker sedan tjänsten för att fastställa slutförandet. Om förhandsetablering används hanteras begäranden snabbt. Tjänsten etablerar en ersättningsdatabas i bakgrunden.

Nästa steg

I den här guiden lärde du dig hur man:

  • Etablera en enda ny klientorganisation.
  • Etablera en batch med ytterligare klienter.
  • Gå in på information om etablering av klienter och registrera dem i katalogen.

Prova självstudien Prestandaövervakning.

Ytterligare resurser