了解如何佈建新的租用戶並在目錄中註冊

適用於:Azure SQL Database

本教學課程將介紹如何佈建和編目 SaaS 模式。 也會說明如何在每一租用戶一個資料庫的 Wingtip Tickets SaaS 應用程式中實作它們。 建立並初始化新的租用戶資料庫,並在應用程式的租用戶目錄中註冊它們。 目錄是一個資料庫,可維護 SaaS 應用程式許多租用戶與其資料之間的對應。 在將應用程式和管理要求導向至正確的資料庫方面,目錄扮演著重要角色。

在本教學課程中,您會了解如何:

  • 佈建單一新租用戶。
  • 佈建一批額外的租用戶。

若要完成本教學課程,請確定已完成下列必要條件:

SaaS 目錄模式簡介

在資料庫支援的多租用戶 SaaS 應用程式中,請務必弄清每個租用戶的資訊儲存位置。 在 SaaS 目錄模式中,會使用目錄資料庫來保存每個租用戶與儲存其資料的資料庫之間的對應。 每當租用戶資料分散到多個資料庫時,就會套用此模式。

每個租用戶都由目錄中的金鑰標識,該金鑰與其資料庫的位置對應。 在 Wingtip Tickets 應用程式中,金鑰由租用戶名稱的雜湊組成。 此結構描述允許應用程式根據應用程式 URL 中包含的租用戶名稱構建金鑰。 可以使用其他租用戶金鑰結構描述。

目錄允許變更資料庫的名稱或位置,而對應用程式的影響最小。 在多租用戶資料庫模型中,此功能還適用於在資料庫之間移動租用戶。 目錄還可用於指出租用戶或資料庫是否會離線進行維護或其他動作。 還原單一租用戶教學課程中會深入探討這項功能。

目錄也可以儲存額外的租用戶或資料庫中繼資料,例如提供給租用戶的結構描述版本、服務方案或 SLA。 目錄可以儲存其他資訊,以啟用應用程式管理、客戶支援或 DevOps。

除 SaaS 應用程式之外,目錄還可以啟用資料庫工具。 在每一租用戶一個資料庫的 Wingtip Tickets SaaS 範例中,目錄被用於啟用跨租用戶查詢,隨選報表教學課程中將深度探討這一主題。 結構描述管理租用戶分析教學課程中深入介紹了跨資料庫的工作管理。

在 Wingtip Tickets SaaS 範例中,目錄的實作乃使用彈性資料庫用戶端程式庫 (EDCL) 的分區管理功能。 可在 Java 和 .NET Framework 中使用 EDCL。 EDCL 可讓應用程式建立、管理及使用資料庫支援的分區對應。

分區對應包含分區 (資料庫) 清單,以及金鑰 (租用戶) 與分區之間的對應。 租用戶佈建期間,EDCL 函式將用於建立分區對應中的項目。 應用程式會在執行階段使用它們來連線到正確的資料庫。 EDCL 會快取連線資訊,以將對目錄資料庫的流量降到最低,並加快應用程式的速度。

重要

可以在目錄資料庫中存取對應資料,但請勿編輯。 僅使用彈性資料庫用戶端程式庫 API 編輯對應資料。 直接操作對應資料可能會損毀目錄,不受支援。

SaaS 佈建模式簡介

當您在使用單一租用戶資料庫模型的 SaaS 應用程式中新增租用戶時,必須佈建新的租用戶資料庫。 資料庫必須在適當的位置和服務層級建立。 也必須使用適當的結構描述和參考資料初始化。 而且必須在目錄中以適當的租用戶金鑰註冊。

可以使用不同的資料庫佈建方法。 可以執行 SQL 指令碼、部署 bacpac 或複製資料庫範本。

資料庫佈建必須是結構描述管理策略的一部分。 必須確定已經使用最新的結構描述佈建新的資料庫。 結構描述管理教學課程中會進一步介紹這項要求。

每一租用戶一個資料庫的 Wingtip Tickets 應用程式會複製目錄伺服器上部署的名為 basetenantdb 的資料庫範本,以佈建新的租用戶。 佈建可以作為註冊體驗的一部分整合到應用程式中。 也可以使用指令碼離線支援它。 本教學課程會探索如何使用 PowerShell 佈建。

佈建指令碼複製 basetenantdb 資料庫,以在彈性集區中建立新的租用戶資料庫。 租用戶資料庫將在對應至新租用戶 newtenant DNS 別名的租用戶伺服器中建立。 此別名會維護用於佈建新租用戶的伺服器參考,並更新為指向災害復原教學課程中的復原租用戶伺服器 (DR using georestoreDR using georeplication)。 然後指令碼會使用租用戶特定資訊初始化資料庫,並在目錄分區對應中註冊資料庫。 系統會根據租用戶名稱指定租用戶資料庫的名稱。 此命名結構描述不是模式的關鍵部分。 目錄會將租用戶金鑰對應至資料庫名稱,因此可以使用任何命名慣例。

取得 Wingtip Tickets SaaS Database Per Tenant 應用程式指令碼

可在 WingtipTicketsSaaS-DbPerTenant GitHub 存放庫中使用 Wingtip Tickets SaaS 指令碼和應用程式來源程式碼。 關於下載和解除封鎖 Wingtip Tickets SaaS 指令碼的步驟,請參閱一般指引

佈建和目錄詳細逐步解說

若要了解 Wingtip Tickets 應用程式如何實作新的租用戶佈建,請在佈建租用戶時新增中斷點並遵循工作流程。

  1. 在 PowerShell ISE 中,開啟 ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1 並設定下列參數:

    • $TenantName = 新場地的名稱 (例如 Bushwillow Blues)。
    • $VenueType = 其中一個預先定義的場地類型:blues、classicalmusic、dance、jazz、judo、motor racing、multipurpose、opera、rockmusic、soccer
    • $DemoScenario = 1佈建單一租用戶
  2. 要新增中斷點,將游標置於顯示 New-Tenant ` 的行上的任意位置。 然後,按 F9。

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

  3. 若要執行指令碼,請按 F5。

  4. 在指令碼於中斷點停止執行之後,請按 F11 進入程式碼。

    Debugging

使用 [偵錯] 功能表選項追蹤指令碼的執行。 按 F10 和 F11 以逐步執行或進入呼叫的函式。 如需對 PowerShell 指令碼進行偵錯的詳細資訊,請參閱使用 PowerShell 指令碼及對其進行偵錯的祕訣 \(英文\)。

不需要明確遵循此工作流程。 它說明了如何對指令碼偵錯。

  • 匯入 CatalogAndDatabaseManagement.psm1 模組。 其中提供了對分區管理函式的目錄和租用戶層級抽象。 此模組封裝了大部分的目錄模式,值得探索。

  • 匯入 SubscriptionManagement.psm1 模組。 其中包含登入 Azure 並選取您想要使用之 Azure 訂用帳戶的功能。

  • 取得設定詳細資料。 使用 F11 逐步執行 Get-Configuration,查看應用程式設定的指定方式。 此處定義了資源名稱和其他應用程式特定值。 在您熟悉指令碼之前,不要變更這些值。

  • 取得目錄物件。 逐步執行 Get-Catalog,此物件會撰寫並傳回在較高層級指令碼中使用的目錄物件。 此函式使用從 AzureShardManagement.psm1 匯入的分區管理函式。 目錄物件由下列元素所組成:

    • $catalogServerFullyQualifiedName 是使用標準詞幹加上您的使用者名稱建構的:catalog-<user>.database.windows .net
    • $catalogDatabaseName 擷取自 config: tenantcatalog
    • $shardMapManager 物件從目錄資料庫初始化。
    • 在目錄資料庫的 tenantcatalog 分區對應中初始化 $shardMap 物件。 系統會撰寫並傳回目錄物件。 較高層級的指令碼中會用到它。
  • 計算新租用戶金鑰。 系統使用雜湊函式,從租用戶名稱建立租用戶金鑰。

  • 檢查租用戶金鑰是否存在。 系統會檢查目錄以確定金鑰可供使用。

  • 租用戶資料庫使用 New-TenantDatabase 佈建。 使用 F11 逐步了解如何使用 Azure Resource Manager 範本佈建資料庫。

    資料庫名稱是根據租用戶名稱建構的,以明確哪個分區屬於哪個租用戶。 也可以使用其他資料庫命名慣例。 Resource Manager 範本會藉由複製目錄伺服器 (baseTenantDB) 上的資料庫範本來建立租用戶資料庫。 或者,也可以藉由匯入 bacpac 來建立資料庫並進行初始化。 或者,還可以從已知的位置執行初始化指令碼。

    Resource Manager 範本位於 …\Learning Modules\Common\ 資料夾中:tenantdatabasecopytemplate.json

  • 會進一步初始化租用戶資料庫。 系統會新增場地 (租用戶) 名稱和場地類型。 也可以在這裡執行其他初始化。

  • 租用戶資料庫在目錄中註冊。 它會使用租用戶金鑰向 Add-TenantDatabaseToCatalog 註冊。 使用 F11 逐步執行詳細資料:

    • 目錄資料庫會新增至分區對應 (已知資料庫的清單)。
    • 連結金鑰值與分區的對應已建立。
    • 有關租用戶的其他中繼資料 (場地名稱) 會新增至目錄中的租用戶資料表。 租用戶資料表不是分區管理結構描述的一部分,而且未由 EDCL 安裝。 此資料表說明如何擴充目錄資料庫,以支援其他應用程式特定資料。

佈建完成之後,執行會傳回原始 Demo-ProvisionAndCatalog 指令碼。 瀏覽器中將為開啟新租用戶的 [事件] 頁面。

Events page

佈建一批租用戶

此練習會佈建一批 17 個租用戶。 建議您先佈建這一批租用戶,再啟動其他每一租用戶一個資料庫的 Wingtip Tickets SaaS 教學課程。 可供使用的資料庫不只幾個。

  1. 在 PowerShell ISE 中,開啟 ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1。 將 $DemoScenario 參數變更為 3:

    • $DemoScenario = 3佈建一批租用戶
  2. 若要執行指令碼,請按 F5。

指令碼會部署一批額外的租用戶。 它會使用 Azure Resource Manager 範本,控制批次並將每個資料庫的佈建委派給連結的範本。 以這種方式使用範本可讓 Azure Resource Manager 代理指令碼的佈建程序。 範本會以平行方式佈建資料庫,並視需要處理重試。 指令碼是等冪的,因此,如果指令碼因任何原因而失敗或停止,請再次執行。

驗證已成功部署的整批租用戶

  • Azure 入口網站中,瀏覽至伺服器清單並開啟 tenants1 伺服器。 選取 SQL Database,並驗證該批次的 17 個附加資料庫現在是否位於清單中。

    Database list

其他佈建模式

本教學課程中未包含的其他佈建模式:

預先佈建的資料庫:預先佈建模式會利用彈性集區中的資料庫不會增加額外費用的事實。 計費是針對彈性集區,而非資料庫。 閑置的資料庫不會取用任何資源。 透過在集區中預先佈建資料庫並在需要時分派它們,您可以縮短新增租用戶的時間。 可以視需要調整預先佈建的資料庫數目,以針對預期的佈建率保留適當的緩衝。

自動佈建:在自動佈建模式中,佈建服務會視需要自動佈建伺服器、集區與資料庫。 如有需要,可以在彈性集區中包含預先佈建的資料庫。 此外,如果資料庫停用並刪除,彈性集區中的間隙可由佈建服務填補。 此類服務可能簡單,也可能複雜,例如處理跨多個地理位置的佈建以及設定異地複寫以進行災害復原。

若使用自動佈建模式,用戶端應用程式或指令碼會將佈建要求提交到由佈建服務處理的佇列。 然後它會輪詢服務以判斷完成情況。 如果使用預先佈建,系統會快速處理要求。 服務會在背景佈建取代資料庫。

下一步

在本教學課程中,您已了解如何:

  • 佈建單一新租用戶。
  • 佈建一批額外的租用戶。
  • 逐步了解佈建租用戶和將它們註冊到目錄的細節。

試用效能監視教學課程

其他資源