Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
В этом уроке вы узнаете, как создавать и каталогизировать шаблоны SaaS. Вы также узнаете, как они реализованы в приложении SaaS для базы данных Wingtip Tickets для каждого арендатора. Вы создаете и инициализируете новые базы данных клиента и регистрируете их в каталоге клиентов приложения. Каталог — это база данных, которая поддерживает сопоставление между многими клиентами приложения SaaS и их данными. Каталог играет важную роль в перенаправлении запросов приложения и управления в правильную базу данных.
В этом руководстве вы узнаете, как:
- Подготовка одного нового клиента.
- Подготовьте пакет дополнительных клиентов.
Чтобы завершить работу с этим руководством, убедитесь, что выполнены следующие предварительные требования:
- Развернуто приложение SaaS Wingtip Tickets с базой данных на каждого арендатора. Чтобы развернуть это менее чем за пять минут, ознакомьтесь с материалом "Развертывание и изучение приложения базы данных SaaS Wingtip Tickets по клиенту".
- Azure PowerShell устанавливается. Дополнительные сведения см. в статье Начало работы сAzure PowerShell.
Общие сведения о шаблоне каталога SaaS
В мультитенантном приложении SaaS, поддерживаемом базой данных, важно знать, где хранится информация для каждого клиента. В шаблоне каталога SaaS база данных каталога используется для хранения сопоставления между каждым клиентом и базой данных, в которой хранятся их данные. Этот шаблон применяется всякий раз, когда данные клиента распределяются по нескольким базам данных.
Каждый клиент определяется ключом в каталоге, который сопоставляется с расположением базы данных. В приложении Wingtip Tickets ключ формируется из хэша имени клиента. Эта схема позволяет приложению создавать ключ из имени клиента, включенного в URL-адрес приложения. Можно использовать другие схемы ключей арендатора.
Каталог позволяет изменять имя или расположение базы данных с минимальным воздействием на приложение. В модели многопользовательской базы данных эта функция также предоставляет возможность перемещать арендатора между базами данных. Каталог также можно использовать для указания того, находится ли клиент или база данных в автономном режиме для обслуживания или других действий. Эта возможность рассматривается в руководстве по восстановлению одного клиента.
Каталог также может хранить дополнительные метаданные клиента или базы данных, такие как версия схемы, план обслуживания или соглашения об уровне обслуживания, предлагаемые клиентам. Каталог может хранить другие сведения, обеспечивающие управление приложениями, поддержку клиентов или DevOps.
Помимо приложения SaaS, каталог может включить средства базы данных. В примере базы данных SaaS Wingtip Tickets для каждого клиента каталог используется для включения запросов между клиентами, которые рассматриваются в руководстве по отчетам Ad hoc. Управление заданиями между базами данных рассматривается в руководствах по управлению схемами и аналитике клиентов .
В примерах SaaS Wingtip Tickets каталог реализуется с помощью функций управления сегментами клиентской библиотеки эластичной базы данных (EDCL). EDCL доступен в Java и .NET Framework. EDCL позволяет приложению создавать, управлять и использовать карту сегментов, поддерживаемую базой данных.
Карта сегментов содержит список сегментов (баз данных) и сопоставление между ключами (клиентами) и сегментами. Функции EDCL используются во время подготовки клиента для создания записей на карте сегментов. Они используются во время выполнения приложениями для подключения к правильной базе данных. EDCL кэширует сведения о подключении, чтобы свести к минимуму трафик к базе данных каталога и ускорить приложение.
Это важно
Данные сопоставления доступны в базе данных каталога, но не изменяйте их. Измените данные сопоставления, используя только API клиентской библиотеки Elastic Database. Непосредственное управление данными сопоставления создает риск повреждения каталога и не допускается.
Общие сведения о шаблоне подготовки SaaS
При добавлении нового клиента в приложение SaaS, использующее модель базы данных с одним клиентом, необходимо подготовить новую базу данных клиента. База данных должна быть создана в соответствующем расположении и уровне служб. Она также должна быть инициализирована с соответствующими схемами и эталонными данными. Он должен быть зарегистрирован в каталоге под соответствующим ключом арендатора.
Можно использовать различные подходы к подготовке базы данных. Вы можете выполнять скрипты SQL, развертывать пакет резервного копирования (bacpac) или копировать шаблон базы данных.
Подготовка базы данных должна быть частью стратегии управления схемами. Необходимо убедиться, что новые базы данных подготовлены с помощью последней схемы. Это требование рассматривается в руководстве по управлению схемами.
Приложение Wingtip Tickets для обработки базы данных каждого арендатора создаёт новых арендаторов, копируя базу данных под названием basetenantdb, которая развертывается на сервере каталога. Автоматизация настройки может быть интегрирована в приложение в рамках процесса регистрации. Его также можно поддерживать в автономном режиме с помощью скриптов. В этом руководстве рассматривается настройка с помощью PowerShell.
Скрипты подготовки копируют базу данных basetenantdb для создания новой базы данных клиента в эластичном пуле. База данных клиента создается на сервере клиента, сопоставленном с новым псевдонимом DNS. Этот псевдоним поддерживает ссылку на сервер, используемый для предоставления новых арендаторов, и обновляется для указания на сервер восстановления арендатора в руководствах по аварийному восстановлению (аварийное восстановление с помощью геовосстановления, аварийное восстановление с помощью георепликации). Затем скрипты инициализируют базу данных с информацией, относящейся к арендатору, и регистрируют её в шарде карты каталога. Базы данных арендатора имеют имена на основе имени арендатора. Эта схема именования не является важной частью шаблона. Каталог сопоставляет ключ клиента с именем базы данных, поэтому можно использовать любое соглашение об именовании.
Получение скриптов приложений SaaS Wingtip Tickets для базы данных на одного арендатора
Скрипты SaaS Wingtip Tickets и исходный код приложения доступны в репозитории WingtipTicketsSaaS-DbPerTenant GitHub. Ознакомьтесь с общим руководством по скачиванию и разблокировкам скриптов SaaS Wingtip Tickets.
Подробное пошаговое руководство по обеспечению и каталогу
Чтобы понять, как приложение Wingtip Tickets реализует подготовку нового клиента, добавьте точку останова и следуйте рабочему процессу при подготовке клиента.
В PowerShell ISE откройте ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1 и задайте следующие параметры:
- $TenantName = имя нового места (например, Бушвиллов Блюз).
- $VenueType = один из предопределенных типов мест проведения: блюз, классическая музыка, танцы, джаз, дзюдо, автогонки, многоцелевой, опера, рок музыка, футбол.
- $DemoScenario = 1, Обеспечение одного арендатора.
Чтобы добавить точку останова, поместите курсор в любое место в строке, которая говорит New-Tenant'. Затем нажмите клавишу F9.
Нажмите клавишу F5, чтобы запустить скрипт.
После остановки выполнения скрипта в точке останова нажмите клавишу F11, чтобы перейти к коду.
Отслеживайте выполнение скрипта, используя параметры меню Отладка. Нажмите клавишу F10 и F11, чтобы перейти к вызываемой функции или перейти к ней. Дополнительные сведения об отладке сценариев PowerShell см. в советах по работе со скриптами PowerShell и их отладке.
Вам не нужно явно следовать этому рабочему процессу. В нем объясняется, как выполнить отладку скрипта.
Импортируйте модуль CatalogAndDatabaseManagement.psm1. Он предоставляет абстракции каталога и уровня арендатора над функциями Управления Сегментами. Этот модуль инкапсулирует большую часть шаблона каталога и стоит изучить.
Импортируйте модуль SubscriptionManagement.psm1. Он содержит функции для входа в Azure и выбора подписки Azure, с которой вы хотите работать.
Получить сведения о конфигурации. Войдите в Get-Configuration с помощью F11 и посмотрите, как указаны настройки приложения. Здесь определены имена ресурсов и другие значения, относящиеся к приложению. Не изменяйте эти значения, пока не знакомы с скриптами.
Получите объект каталога. Войдите в Get-Catalog, который создает и возвращает объект каталога, используемый в высокоуровневом скрипте. Эта функция использует функции управления сегментами, импортированные из AzureShardManagement.psm1. Объект каталога состоит из следующих элементов:
- $catalogServerFullyQualifiedName создается с использованием стандартного префикса и вашего имени пользователя: catalog-<user>.database.windows.net.
- $catalogDatabaseName извлекается из конфигурации: tenantcatalog.
- объект $shardMapManager инициализирован из базы данных каталога.
- $shardMap объект инициализируется из карты сегментов tenantcatalog в базе данных каталога. Объект каталога сформирован и возвращён. Он используется в скрипте более высокого уровня.
Вычислите новый ключ арендатора. Хэш-функция используется для создания ключа клиента из имени клиента.
Проверьте, существует ли ключ арендатора. Каталог проверяется, чтобы убедиться, что ключ доступен.
База данных клиента подготовлена с помощью New-TenantDatabase. Используйте F11, чтобы перейти к подготовке базы данных с помощью шаблона Azure Resource Manager.
Имя базы данных создается из имени клиента, чтобы определить, какой сегмент принадлежит клиенту. Вы также можете использовать другие соглашения об именовании баз данных. Шаблон Resource Manager создает базу данных клиента путем копирования базы данных шаблона (baseTenantDB) на сервере каталога. В качестве альтернативы можно создать базу данных и инициализировать ее, импортируя bacpac. Или можно выполнить скрипт инициализации из определённого места.
Шаблон Resource Manager находится в папке ...\Learning Modules\Common\Common\: tenantdatabasecopytemplate.json
База данных арендатора дополнительно инициализируется. Добавляется имя места (арендатор) и тип места проведения. Вы также можете выполнить другую инициализацию здесь.
База данных клиента зарегистрирована в каталоге. Он зарегистрирован в Add-TenantDatabaseToCatalog с помощью ключа арендатора. Используйте F11, чтобы перейти к подробным сведениям:
- База данных каталога добавляется на карту сегментов (список известных баз данных).
- Сопоставление, которое связывает значение ключа с шардом, создается.
- Дополнительные метаданные о клиенте (имя места проведения) добавляются в таблицу "Клиенты" в каталоге. Таблица "Клиенты" не является частью схемы управления сегментами, и она не устанавливается EDCL. В этой таблице показано, как можно расширить базу данных каталога для поддержки дополнительных данных, относящихся к приложениям.
После завершения подготовки выполнение возвращается в исходный скрипт Demo-ProvisionAndCatalog . Откроется страница "События " для нового клиента в браузере.
Предоставление пакета тенантов
Это упражнение подготавливает пакет из 17 арендаторов. Рекомендуем настроить этот пакет клиентов, прежде чем начинать другие обучающие руководства по базам данных SaaS Wingtip Tickets для каждого клиента. Существует несколько баз данных, с которыми можно работать.
В PowerShell ISE откройте ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1. Измените параметр $DemoScenario на 3:
- $DemoScenario = 3. Предоставление пакета арендаторов.
Нажмите клавишу F5, чтобы запустить скрипт.
Сценарий развертывает группу дополнительных тенантов. Он использует шаблон Azure Resource Manager , который управляет пакетом и делегирует подготовку каждой базы данных в связанный шаблон. Таким образом, использование шаблонов позволяет Azure Resource Manager управлять процессом развертывания вашего сценария. При необходимости шаблоны подготавливают базы данных параллельно и обрабатывают повторные попытки. Сценарий является идемпотентным, поэтому если он завершается ошибкой или останавливается по какой-либо причине, запустите его снова.
Проверка группы арендаторов, успешно развернутых
На портале Azure перейдите к списку серверов и откройте сервер tenants1 . Выберите базы данных SQL и убедитесь, что пакет из 17 дополнительных баз данных теперь находится в списке.
Другие шаблоны обеспечения
Другие шаблоны подготовки, не включенные в это руководство:
Базы данных предварительной подготовки. Шаблон предварительной подготовки использует тот факт, что базы данных в эластичном пуле не добавляют дополнительные затраты. Выставление счетов относится к эластичному пулу, а не к базам данных. Неактивные базы данных не используют ресурсов. Предварительно подготовив базы данных в пуле и распределив их при необходимости, можно сократить время добавления клиентов. Количество предварительно подготовленных баз данных можно настроить при необходимости, чтобы сохранить буфер, подходящий для ожидаемой скорости подготовки.
Автоподготовка: в модели автоподготовки служба автоматически подготавливает серверы, пулы и базы данных по мере необходимости. Если вы хотите, можно включить предварительно настроенные базы данных в эластичные пулы. Если базы данных выведены из эксплуатации и удалены, пробелы в эластичных пулах может заполнить служба предоставления ресурсов. Такая служба может быть простой или сложной, например управление поставками в нескольких географических регионах и настройка георепликации для аварийного восстановления.
С помощью шаблона автоматической подготовки клиентское приложение или скрипт отправляет запрос на подготовку в очередь, которую обрабатывает служба подготовки. Затем он опрашивает службу, чтобы удостовериться в его завершении. Если используется предварительная подготовка, запросы обрабатываются быстро. Служба подготавливает замещающую базу данных в фоновом режиме.
Дальнейшие шаги
В этом руководстве вы узнали, как:
- Подготовка одного нового клиента.
- Подготовьте пакет дополнительных клиентов.
- Ознакомьтесь с деталями предоставления арендаторов и их регистрации в каталоге.
Ознакомьтесь с руководством по мониторингу производительности.