Azure SQL Server Elastic Pool - автоматически добавлять базу данных в пул

В настоящее время у нас есть Azure SQL Server, и каждый раз, когда мы создаем новое веб-приложение, мы используем EF Core Code First для создания базы данных. Однако после создания базы данных мы вручную переходим на портал Azure и добавляем вновь созданную базу данных в Elastic Pool внутри Azure SQL Server. Можно ли каким-то образом автоматизировать процесс, чтобы каждая вновь созданная база данных либо через портал, либо сгенерированная с использованием EF или чего-либо другого, автоматически добавлялась в пул?

2 ответа

Решение

Вы можете использовать Transact-SQL для программного перемещения существующей базы данных SQL Azure в эластичный пул.

ALTER DATABASE db1   
MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = pool1 ) ) ;  

Вы должны использовать клиентскую библиотеку базы данных Elastic для управления созданием БД, чтобы ShardMapManager мог зарегистрировать базу данных. Обратите внимание, что я сказал, что база данных (или осколок в терминологии Elastic DB) НЕ арендатор (или осколок в терминологии Elastic DB).

Полные компоненты Elastic DB для сервера SQL следующие: шардинг был добавлен с помощью Elastic Database SDK, который включает следующие компоненты (некоторые из которых доступны только в Azure): • Клиентская библиотека Elastic Database. Управление распределением данных и сопоставление арендаторов с базами данных., • Эластичные пулы баз данных (только Azure). Выделение пула ресурсов, которые могут совместно использоваться несколькими базами данных. Позволяет использовать ресурсы базы данных для потребителей по собственному тарифу, а не для каждой базы данных, имеющей определенное количество доступных ресурсов.

• Эластичный запрос к базе данных Возможность запрашивать у всех арендаторов в базе данных с несколькими арендаторами.

• Elastic Database Jobs Package и надежное развертывание операций обслуживания базы данных или изменений схемы базы данных в нескольких базах данных.

• Эластичные транзакции Обрабатывает изменения в нескольких базах данных атомарным и изолированным способом.

• Elastic Database Split-Merge Tools Позволяет перемещать осколки между базами данных, которые участвуют в каркасе.

Важными концепциями использования этой библиотеки является то, что у Осколка может быть одно или сопоставление для хранения Осколков (или сопоставления из ShardMapManager). Фактически ShardMapManager поддерживает две коллекции: Shards (getShards) и Mapping (GetMappings). Сопоставления ShardKeys прикреплены к осколку...

У вас есть два типа определений Shard Key: RangeMapShard и ListMapShard - оба они наследуют ShardMap (который содержит свойство ShardMapType для определения подтипа, который создает экземпляр ShardMap).

RangeMapShard - содержит ряд ключей для ОДНОГО сопоставления.. например, клиент 100-200 (значение 200 на единицу выше, чем допустимое в диапазоне (на мой взгляд, это дурацкий способ определения этого... но это документация MS), так то, что они имеют в виду, составляет 100-199, 200-299 определяется с использованием диапазонов 100-200 и 200-300.

ListMapShard - удерживайте один ключ осколка для каждого осколка. Таким образом, 1 значение ShardKey равно 1 ShardMap (Осколок может содержать один или несколько Осколков - так что Осколок может содержать сопоставления...)...

Таким образом, вы должны сопоставить свой ключ (и) осколка с картой осколка, а затем связать карту осколка с осколком, и осколок должен быть связан с базой данных.... помните, вы можете создать базу данных, которая не иметь в нем осколок (или схему).

Я обнаружил, что хотел обдумать это с другой стороны, начиная с БД и вставляя данные в эту БД. IMO, Elastic DB SDK работает по-другому, вы определяете Shardlet (арендатор), сопоставляете его с shard (схема), а затем вставляете Shard(схему) в базу данных.

НТН.

Другие вопросы по тегам