Поделиться через


Подготовка новых клиентов и их каталогизация при помощи шаблона однотенантного приложения SaaS

Применимо к: База данных SQL Azure

В этой статье рассматривается подготовка и каталогизация новых клиентов при помощи шаблона однотенантного приложения SaaS. Эта статья состоит из двух основных частей:

  • Основное описание подготовки и каталогизации новых клиентов.
  • Руководство, в котором описан пример кода PowerShell, который выполняет подготовку и каталогизацию
    • В руководстве используется пример приложения SaaS Wingtip Tickets, адаптированного для шаблона однотенантного приложения.

Шаблон однотенантного изолированного приложения

Шаблон изолированного однотенантного приложения относится к шаблонам мультитенантных приложений SaaS. В этом шаблоне изолированное приложение подготавливается для каждого клиента. Приложение состоит из компонентов уровня приложения и Базы данных SQL Azure. Каждое приложение клиента можно развернуть в подписке поставщика. Кроме того, Azure предлагает программу управляемых приложений, в которой приложение может быть развернуто в подписке клиента и управляется поставщиком от имени клиента.

Шаблон однотенантного приложения

При развертывании приложение и база данных подготавливаются в новой группе ресурсов, созданной для клиента. Использование отдельных групп ресурсов позволяет изолировать ресурсы каждого клиента и управлять ими независимо. В каждой группе ресурсов экземпляр приложения настраивается для прямого доступа к соответствующей базе данных. Эта модель подключения отличается от других шаблонов, которые используют каталог в качестве посредника подключений между приложением и базой данных. Так как отсутствует совместное использование ресурсов, каждую базу данных клиента следует подготовить с достаточными ресурсами для обработки пиковой нагрузки. Этот шаблон обычно используется для приложений SaaS с меньшим количеством клиентов, где упор делается на изоляцию клиентов и меньше внимания уделяется затратам ресурсов.

Использование каталога клиента с шаблоном однотенантного приложения

Хотя приложение и база данных каждого клиента полностью изолированы, различные сценарии управления и аналитики могут работать в разных клиентах. Например, для изменения схемы нового выпуска приложения требуются изменения в схеме каждой базы данных клиента. В сценариях отчетов и аналитики также может требоваться доступ ко всем базам данных клиентов, независимо от того, где они развернуты.

Схема, на которой показано использование каталога клиента с шаблоном однотенантного приложения.

Каталог клиента содержит сопоставление между идентификатором клиента и базой данных клиента, что позволяет разрешать идентификатор для сервера и имени базы данных. В приложении Wingtip SaaS идентификатор клиента вычисляется как хэш имени клиента, хотя могут использоваться другие схемы. Изолированным приложениям не требуется каталог для управления подключениями. Каталог может использоваться, чтобы определить область действий в наборе баз данных клиента. Например, эластичный запрос может использовать каталог для определения набора баз данных, в которых распространяются запросы для формирования отчетов между клиентами.

Клиентская библиотека эластичной базы данных

Каталог в примере приложения Wingtip реализуется с помощью функций управления сегментами в клиентской библиотеке эластичной базы данных (EDCL). Библиотека позволяет приложению создавать, администрировать и использовать карту сегментов, которая хранится в базе данных. В примере Wingtip Tickets каталог хранится в базе данных каталогов клиента. Сегмент сопоставляет ключ клиента с сегментом (базой данных), в которой хранятся данные этого клиента. Функции EDCL управляют глобальной картой сегментов, которая хранится в таблицах базы данных каталогов клиента, и локальной картой, хранящейся в каждом сегменте.

Функции EDCL можно использовать в приложениях или сценариях PowerShell, чтобы создавать и управлять записями в карте сегментов. Другие функции EDCL могут использоваться для извлечения набора сегментов или подключения к правильной базе данных определенного ключа клиента.

Внимание

Не изменяйте данные в базе данных каталога или локальной карте сегментов непосредственно в базе данных клиента. Прямые обновления не поддерживаются из-за высокого риска повреждения данных. Вместо этого измените данные сопоставления с использованием только API-интерфейсов EDCL.

Подготовка клиента

Для каждого клиента требуется новая группа ресурсов Azure, которая должна быть создана перед подготовкой в ней ресурсов. После создания группы ресурсов для развертывания компонентов приложения и базы данных можно использовать шаблон управления ресурсами Azure, а затем настроить соединение с базой данных. Чтобы инициализировать схему базы данных, шаблон может импортировать BACPAC-файл. Кроме того, база данных может быть создана как копия базы данных шаблона. Затем в базе данных будут дополнительно обновлены ​​изначальные данные о месте мероприятия, а база данных зарегистрирована в каталоге.

Учебник

Из этого руководства вы узнаете, как выполнить следующие задачи:

  • Подготовка каталога
  • Регистрация примеров баз данных клиента, развернутых ранее в каталоге.
  • Подготовка дополнительных клиентов и их регистрация в каталоге

Шаблон Azure Resource Manager используется для развертывания и настройки приложения, создания базы данных клиента и последующего импорта BACPAC-файла для его инициализации. Запрос на импорт может быть поставлен в очередь в течение нескольких минут до выполнения.

В конце работы с этим руководством у вас будет набор изолированных однотенантных приложений, базы данных которых будут зарегистрированы в каталоге.

Необходимые компоненты

Для работы с этим руководством выполните следующие предварительные требования:

Подготовка каталога

В этой задаче вы узнаете, как создать каталог, используемый для регистрации всех баз данных клиента. Вы обязуетесь:

  • Подготовка базы данных каталога с помощью шаблона управления ресурсами Azure. База данных инициализируется путем импорта BACPAC-файла.
  • Регистрация примеров приложений для клиента, развернутых ранее. Каждый клиент регистрируется с использованием ключа, созданного на основе хэша имени клиента. Имя клиента также сохраняется в таблице расширений каталога.
  1. В интегрированной среде сценариев PowerShell откройте файл ...\Learning Modules\UserConfig.psm и замените значение <user> на значение, используемое при развертывании трех примеров приложений. Сохраните файл.

  2. В интегрированной среде сценариев PowerShell откройте файл ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 и установите значение $Scenario = 1. Разверните каталог клиента и зарегистрируйте заранее определенные клиенты.

  3. Добавьте точку останова, поместив курсор в любом месте строки 38, содержащей & $PSScriptRoot\New-Catalog.ps1, а затем нажмите клавишу F9.

    Настройка точки останова для трассировки

  4. Запустите сценарий, нажав клавишу F5.

  5. После остановки выполнения сценария в точке останова нажмите клавишу F11, чтобы пошагово выполнить сценарий New-Catalog.ps1.

  6. Отслеживайте выполнение сценария и используйте клавиши F10 и F11 (меню Отладка), чтобы обойти вызываемые функции или перейти в них по очереди.

После завершения сценария будет создан каталог, а все примеры клиентов будут зарегистрированы.

Теперь посмотрим на созданные ресурсы.

  1. Войдите на портал Azure и перейдите к группам ресурсов. Откройте группу ресурсов wingtip-sa-catalog-<user> и запишите сервер каталога и базу данных.

  2. Откройте базу данных на портале и выберите обозреватель данных в левом меню. Щелкните команду для входа, а затем введите пароль P@ssword1.

  3. Изучите схему базы данных tenantcatalog.

    • Объекты в схеме __ShardManagement предоставляются клиентской библиотекой эластичной базы данных.
    • Таблица Tenants и представление TenantsExtended — это расширения, добавленные в пример, которые демонстрируют, как вы можете расширить каталог для использования дополнительных значений.
  4. Выполните запрос SELECT * FROM dbo.TenantsExtended.

    Обозреватель данных

    В качестве альтернативы использованию обозревателя данных вы можете подключиться к базе данных из SQL Server Management Studio. Для этого подключитесь к серверу wingtip-

    Обратите внимание, что не следует изменять данные непосредственно в каталоге. Для этого следует использовать API-интерфейсы управления сегментами.

Подготовка нового приложения для клиента

В этой задаче вы узнаете, как подготовить однотенантное приложение. Вы обязуетесь:

  • Создание группы ресурсов для клиента.
  • Подготовка приложения и базы данных в новой группе ресурсов с помощью шаблона управления ресурсами Azure. Это действие включает в себя инициализацию базы данных с помощью общей схемы и справочных данных путем импорта BACPAC-файла.
  • Инициализация базы данных с помощью основных сведений клиента. Это действие включает в себя указание типа места мероприятия, которое определяет фотографию, используемую в качестве фона на веб-сайте событий.
  • Регистрация базы данных в базе данных каталога.
  1. В интегрированной среде сценариев PowerShell откройте файл ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 и установите значение $Scenario = 2. Разверните каталог клиента и зарегистрируйте заранее определенные клиенты.

  2. Добавьте точку останова в сценарий, поместив курсор в любом месте строки 49, содержащей & $PSScriptRoot\New-TenantApp.ps1, а затем нажмите клавишу F9.

  3. Запустите сценарий, нажав клавишу F5.

  4. После остановки выполнения сценария в точке останова нажмите клавишу F11, чтобы пошагово выполнить сценарий New-Catalog.ps1.

  5. Отслеживайте выполнение сценария и используйте клавиши F10 и F11 (меню Отладка), чтобы обойти вызываемые функции или перейти в них по очереди.

После подготовки клиента откроется веб-сайт нового клиента событий.

гонка red maple

Затем можно проверить новые ресурсы, созданные на портале Azure.

ресурсы гонки red maple

Чтобы остановить выставление счетов, удалите группы ресурсов.

Изучив пример, удалите все созданные группы ресурсов, чтобы остановить соответствующее выставление счетов.

Дополнительные ресурсы

Следующие шаги

Из этого руководства вы узнали следующее:

  • как развернуть изолированное SaaS-приложение Wingtip Tickets;
  • сведения о серверах и базах данных, формирующих приложение;
  • как удалить примеры ресурсов, чтобы не оплачивать их.

Вы можете узнать, как используется каталог для поддержки различных межклиентских сценариев, с помощью версии приложения SaaS Wingtip Tickets, использующей одну базу данных на клиент.