Dela via


Etablera och katalogisera nya klienter med hjälp av saaS-mönstret för program per klientorganisation

Gäller för:Azure SQL Database

Den här artikeln beskriver etablering och katalogisering av nya klienter med hjälp av det fristående saaS-mönstret per klientorganisation. Den här artikeln innehåller två huvudsakliga delar:

  • Konceptuell diskussion om etablering och katalogisering av nya klienter
  • En självstudiekurs som visar exempel på PowerShell-kod som utför etablering och katalogisering
    • Självstudien använder Wingtip Tickets-exempelprogrammet SaaS, anpassat till den fristående appen per klientorganisationsmönster.

Fristående program per klientorganisationsmönster

Det fristående appmönstret per klientorganisation är ett av flera mönster för SaaS-program med flera klientorganisationer. I det här mönstret etableras en fristående app för varje klientorganisation. Programmet består av komponenter på programnivå och en Azure SQL Database. Varje klientapp kan distribueras i leverantörens prenumeration. Alternativt erbjuder Azure ett program för hanterade program där en app kan distribueras i en klients prenumeration och hanteras av leverantören för klientorganisationens räkning.

app-per-tenant pattern

När du distribuerar ett program för en klientorganisation etableras appen och databasen i en ny resursgrupp som skapats för klientorganisationen. Genom att använda separata resursgrupper isoleras varje klients programresurser och de kan hanteras oberoende av varandra. I varje resursgrupp konfigureras varje programinstans för direkt åtkomst till motsvarande databas. Den här anslutningsmodellen står i kontrast till andra mönster som använder en katalog för att asynkrona anslutningar mellan appen och databasen. Och eftersom det inte finns någon resursdelning måste varje klientdatabas etableras med tillräckliga resurser för att hantera den högsta belastningen. Det här mönstret tenderar att användas för SaaS-program med färre klienter, där det finns en stark betoning på klientisolering och mindre betoning på resurskostnader.

Använda en klientkatalog med programmet per klientorganisationsmönster

Även om varje klients app och databas är helt isolerade kan olika hanterings- och analysscenarier fungera mellan klienter. Om du till exempel vill tillämpa en schemaändring för en ny version av programmet krävs ändringar i schemat för varje klientdatabas. Rapporterings- och analysscenarier kan också kräva åtkomst till alla klientdatabaser oavsett var de distribueras.

Diagram that shows how to use a tenant catalog with the application per tenant pattern.

Klientkatalogen innehåller en mappning mellan en klientidentifierare och en klientdatabas, vilket gör att en identifierare kan matchas till ett server- och databasnamn. I Wingtip SaaS-appen beräknas klientidentifieraren som en hash för klientorganisationens namn, även om andra scheman kan användas. Fristående program behöver inte katalogen för att hantera anslutningar, men katalogen kan användas för att begränsa andra åtgärder till en uppsättning klientdatabaser. Elastic Query kan till exempel använda katalogen för att fastställa vilken uppsättning databaser som frågor distribueras för rapportering mellan klienter.

Klientbibliotek för Elastic Database

I Wingtip-exempelprogrammet implementeras katalogen av shardhanteringsfunktionerna i Elastic Database Client Library (EDCL). Biblioteket gör det möjligt för ett program att skapa, hantera och använda en fragmentkarta som lagras i en databas. I exemplet wingtip-biljetter lagras katalogen i klientkatalogdatabasen. Shard mappar en klientnyckel till fragmentet (databasen) där klientorganisationens data lagras. EDCL-funktioner hanterar en global fragmentkarta som lagras i tabeller i klientkatalogdatabasen och en lokal fragmentkarta som lagras i varje shard.

EDCL-funktioner kan anropas från program eller PowerShell-skript för att skapa och hantera posterna i fragmentkartan. Andra EDCL-funktioner kan användas för att hämta uppsättningen shards eller ansluta till rätt databas för en viss klientnyckel.

Viktigt!

Redigera inte data i katalogdatabasen eller den lokala fragmentkartan direkt i klientdatabaserna. Direkta uppdateringar stöds inte på grund av den höga risken för att data skadas. Redigera i stället mappningsdata med endast EDCL-API:er.

Etablering av klientorganisation

Varje klientorganisation kräver en ny Azure-resursgrupp som måste skapas innan resurser kan etableras i den. När resursgruppen finns kan en Azure Resource Management-mall användas för att distribuera programkomponenterna och databasen och sedan konfigurera databasanslutningen. Om du vill initiera databasschemat kan mallen importera en bacpac-fil. Du kan också skapa databasen som en kopia av en malldatabas. Databasen uppdateras sedan ytterligare med inledande platsdata och registreras i katalogen.

Självstudier

I den här självstudiekursen får du lära du dig att:

  • Etablera en katalog
  • Registrera exempelklientdatabaserna som du distribuerade tidigare i katalogen
  • Etablera ytterligare en klientorganisation och registrera den i katalogen

En Azure Resource Manager-mall används för att distribuera och konfigurera programmet, skapa klientdatabasen och sedan importera en bacpac-fil för att initiera den. Importbegäran kan köas i flera minuter innan den åtgärdas.

I slutet av den här självstudien har du en uppsättning fristående klientprogram med varje databas registrerad i katalogen.

Förutsättningar

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

Etablera katalogen

I den här uppgiften får du lära dig hur du etablerar katalogen som används för att registrera alla klientdatabaser. Du kommer att:

  • Etablera katalogdatabasen med hjälp av en Azure-resurshanteringsmall. Databasen initieras genom att en bacpac-fil importeras.
  • Registrera de exempelklientappar som du distribuerade tidigare. Varje klientorganisation registreras med hjälp av en nyckel som skapats från en hash för klientorganisationens namn. Klientorganisationens namn lagras också i en tilläggstabell i katalogen.
  1. I PowerShell ISE öppnar du ...\Learning Modules\UserConfig.psm och uppdaterar <användarvärdet> till det värde som du använde när du distribuerade de tre exempelprogrammen. Spara filen.

  2. I PowerShell ISE öppnar du ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 och anger $Scenario = 1. Distribuera klientkatalogen och registrera de fördefinierade klienterna.

  3. Lägg till en brytpunkt genom att placera markören var som helst på raden som säger , & $PSScriptRoot\New-Catalog.ps1och tryck sedan på F9.

    setting a breakpoint for tracing

  4. Kör skriptet genom att trycka på F5.

  5. När skriptkörningen stoppas vid brytpunkten trycker du på F11 för att gå in i skriptet New-Catalog.ps1.

  6. Spåra skriptets körning med hjälp av menyalternativen Felsöka, F10 och F11, för att gå över eller till anropade funktioner.

När skriptet har slutförts finns katalogen och alla exempelklientorganisationer registreras.

Titta nu på de resurser som du skapade.

  1. Öppna Azure-portalen och bläddra bland resursgrupperna. Öppna resursgruppen wingtip-sa-catalog-user<> och notera katalogservern och databasen.

  2. Öppna databasen i portalen och välj Datautforskaren på den vänstra menyn. Klicka på kommandot Login (Inloggning) och ange sedan lösenordet = P@ssword1.

  3. Utforska schemat för tenantcatalog-databasen .

    • Objekten __ShardManagement i schemat tillhandahålls av elastic database-klientbiblioteket.
    • Tabellen Tenants och TenantsExtended vyn är tillägg som läggs till i exemplet som visar hur du kan utöka katalogen för att ge ytterligare värde.
  4. Kör frågan , SELECT * FROM dbo.TenantsExtended.

    data explorer

    Som ett alternativ till att använda Datautforskaren kan du ansluta till databasen från SQL Server Management Studio. Det gör du genom att ansluta till serverns wingtip-

    Observera att du inte bör redigera data direkt i katalogen – använd alltid API:erna för shardhantering.

Etablera ett nytt klientprogram

I den här uppgiften får du lära dig hur du etablerar ett enda klientprogram. Du kommer att:

  • Skapa en ny resursgrupp för klientorganisationen.
  • Etablera programmet och databasen i den nya resursgruppen med hjälp av en Azure-resurshanteringsmall. Den här åtgärden omfattar att initiera databasen med vanliga schema- och referensdata genom att importera en bacpac-fil.
  • Initiera databasen med grundläggande klientinformation. Den här åtgärden omfattar att ange platstyp, vilket avgör vilket fotografi som används som bakgrund på dess webbplats för händelser.
  • Registrera databasen i katalogdatabasen.
  1. I PowerShell ISE öppnar du ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 och anger $Scenario = 2. Distribuera klientkatalogen och registrera de fördefinierade klientorganisationen

  2. Lägg till en brytpunkt i skriptet genom att placera markören var som helst på rad 49 som säger , & $PSScriptRoot\New-TenantApp.ps1och tryck sedan på F9.

  3. Kör skriptet genom att trycka på F5.

  4. När skriptkörningen stoppas vid brytpunkten trycker du på F11 för att gå in i skriptet New-Catalog.ps1.

  5. Spåra skriptets körning med hjälp av menyalternativen Felsöka, F10 och F11, för att gå över eller till anropade funktioner.

När klientorganisationen har etablerats öppnas den nya klientorganisationens webbplats för händelser.

red maple racing

Du kan sedan granska de nya resurser som skapats i Azure-portalen.

red maple racing resources

Om du vill stoppa faktureringen tar du bort resursgrupper

När du har utforskat exemplet tar du bort alla resursgrupper som du skapade för att stoppa den associerade faktureringen.

Ytterligare resurser

Nästa steg

I den här guiden har du lärt dig:

  • Så här distribuerar du Det fristående Programmet Wingtip Tickets SaaS.
  • Om de servrar och databaser som utgör appen.
  • Så här tar du bort exempelresurser för att stoppa relaterad fakturering.

Du kan utforska hur katalogen används för att stödja olika scenarier mellan klientorganisationer med hjälp av versionen database-per-tenant för Wingtip Tickets SaaS-programmet.