Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
Это важно
Эластичные запросы в режиме диспетчера карт сегментов (горизонтальное секционирование), используя EXTERNAL DATA SOURCE тип SHARD_MAP_MANAGER, достигают конца поддержки 31 марта 2027 г. После этой даты существующие рабочие нагрузки будут продолжать функционировать, но больше не будут получать поддержку, а создание новых внешних источников данных типа SHARD_MAP_MANAGER больше не будет возможным. Сведения о параметрах миграции см. в руководстве по миграции из режима диспетчера сопоставления сегментов эластичных запросов.
Легко управлять существующими масштабируемыми сегментированных базами данных с помощью средств (например, создание масштабируемых облачных баз данных). Для использования диспетчера сопоставления сегментов следует сначала преобразовать существующий набор баз данных.
Обзор
Для переноса существующей сегментированной базы данных выполните следующие действия.
- Подготовьте базу данных менеджера карты шардов.
- Создать карту сегментов.
- Подготовьте отдельные сегменты.
- Добавление сопоставлений на карту сегментов.
Эти методы можно реализовать с помощью клиентской библиотеки .NET Framework или сценариев PowerShell, которые можно найти на странице Azure SQL DB — Elastic Database tools scripts. В приведенных здесь примерах используются скрипты PowerShell.
Чтобы больше узнать о ShardMapManager, ознакомьтесь с управлением картами сегментов. Общие сведения об инструментах эластичной базы данных см. в обзоре возможностей эластичных баз данных.
Подготовьте базу данных диспетчера карты шардов
Диспетчер карты сегментов — это специальная база данных, хранящая данные для управления масштабируемыми базами данных. Можно использовать существующую базу данных или создать новую. База данных, выступающая в роли диспетчера карт сегментов, не должна быть той же базой данных, что и сегмент. Сценарий PowerShell не создает базу данных автоматически.
Шаг 1. Создание диспетчера картировки шарда
# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.
Получите диспетчер карт сегментов
После создания менеджер сопоставления сегментов можно извлечь с помощью этого командлета. Этот шаг требуется выполнять при каждом использовании объекта ShardMapManager.
# Try to get a reference to the Shard Map Manager
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
Шаг 2. Создание карты сегментов
Выберите тип создаваемого сопоставления сегментов. Этот выбор зависит от архитектуры базы данных.
- Один клиент на базу данных (определения терминов см. в глоссарии).
- Несколько арендаторов в базе данных (два типа):
- Сопоставление списков
- Отображение диапазонов
Для модели с одним клиентом создайте карту сегментов с сопоставлением по списку . В модели с одним клиентом каждому клиенту назначается по одной базе данных. Эта модель подходит для разработчиков SaaS, так как она упрощает управление.
Мультитенантная модель назначает несколько клиентов отдельной базе данных (и вы можете распределять группы клиентов между несколькими базами данных). Эту модель можно использовать, когда у каждого отдельного клиента низкие потребности в обработке данных. В этой модели назначается диапазон арендаторов к базе данных с использованием диапазона сопоставления.
Кроме того, можно реализовать модель многопользовательской базы данных с помощью сопоставления списка для назначения нескольких клиентов на одну базу данных. Например, база данных DB1 используется для хранения информации о клиенте 1 и 5, а DB2 хранит данные о клиенте 7 и 10.
Выберите один из вариантов, соответствующий вашему выбору.
Вариант 1. Создание карты шардов для отображения списка
Создайте карту сегментов, используя объект ShardMapManager.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Вариант 2. Создание карты сегментов для сопоставления по диапазонам
Чтобы использовать этот шаблон сопоставления, значения идентификатора клиента должны быть непрерывными диапазонами, и это допустимо, чтобы иметь разрыв в диапазонах, пропуская диапазон при создании баз данных.
# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager
Вариант 3. Список сопоставлений на отдельной базе данных
Для настройки этого шаблона также требуется создать карту списков, как показано в разделе "Шаг 2, вариант 1".
Шаг 3. Подготовка отдельных сегментов
Добавьте каждый сегмент (база данных) в диспетчер сопоставления сегментов. Таким образом отдельные базы данных будут подготовлены для хранения сведений о сопоставлении. Выполните этот метод на каждом шарде. Это $ShardMap карта сегментов, созданная на шаге 2.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Шаг 4. Добавление сопоставлений
Добавление сопоставлений зависит от вида созданной карты сегментов. Если вы создали карту списков, добавьте сопоставления списков. Если вы создали карту диапазонов, добавьте сопоставления по диапазонам.
Вариант 1. Сопоставление данных для сопоставления по списку
Сопоставьте данные, добавив карту в виде списка для каждого арендатора. Используйте следующий пример скрипта PowerShell, чтобы создать сопоставления и связать их с новыми сегментами.
# Create the mapping and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Вариант 2. Сопоставление данных для сопоставления по диапазонам
Добавьте сопоставления диапазонов для ассоциаций диапазонов идентификаторов арендатора с базами данных. Используйте следующий пример скрипта PowerShell, чтобы создать сопоставления и связать их с новыми сегментами.
# Create the mapping and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Шаг 4, вариант 3. Сопоставление данных для нескольких клиентов в отдельной базе данных
Для каждого арендатора выполните командлет Add-ListMapping (вариант 1).
Проверка сопоставлений
Сведения о существующих сегментах и сопоставлениях, связанных с ними, можно запрашивать с помощью следующего примера скрипта PowerShell:
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Итоги
После завершения настройки можно начать работу с клиентской библиотекой эластичной базы данных. Кроме того, можно воспользоваться маршрутизацией, зависящей от данных, и формированием многосегментных запросов.