Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
Легко управлять существующими масштабируемыми сегментированных базами данных с помощью средств (например, создание масштабируемых облачных баз данных). Для использования диспетчера сопоставления сегментов следует сначала преобразовать существующий набор баз данных.
Обзор
Для переноса существующей сегментированной базы данных выполните следующие действия.
- Подготовка базы данных диспетчера карты сегментов.
- Создание карты сегментов.
- Подготовка отдельных сегментов.
- Добавление сопоставлений на карту сегментов.
Эти методы можно реализовать с помощью клиентской библиотеки .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
Итоги
После завершения настройки можно начать работу с клиентской библиотекой эластичной базы данных. Кроме того, можно воспользоваться маршрутизацией, зависящей от данных, и формированием многосегментных запросов.