Azure Elastic Database Pool
Я нахожусь в процессе разработки системы SaaS, которая будет работать в Azure и использующей SQL Server. Приложение будет использовать пул баз данных Azure Elastic для поддержки масштабирования с помощью Sharding. План состоит в том, чтобы запустить модель Shared-Sharded и использовать Shard Map, чтобы сопоставить Tenant Id с правильной базой данных.
Я читал документацию по Azure и успешно настроил Elastic DB Pool для нескольких моих тестовых баз данных в моей среде DEV. Так что я понимаю, как это реализовать и в теории, как это будет работать.
Что мне неясно, так это то, что лучше всего создавать каждую базу данных Azure SQL (Shard) на своем собственном сервере Azure SQL Server или просто запускать один сервер с несколькими базами данных. Я пытаюсь выяснить, возможно ли какое-либо узкое место в производительности, если бы у меня было 30 баз данных на одном сервере против 30 серверов с одной базой данных каждая. В любом случае я предполагаю, что 30 баз данных являются частью единого эластичного пула.
Может ли кто-нибудь помочь мне концептуально понять, как распределяются ресурсы? Вся документация говорит о том, что ресурс выделяется базе данных, а сервер никогда не упоминается, поэтому я предполагаю, что это несколько неактуально и является просто контейнером в этом контексте.
Этот вопрос вызван тем, что большая часть моего опыта основана на мире физических серверов SQL, где существует ограничение на количество баз данных, которые вы можете разместить на каждом сервере.
1 ответ
Я ответил на свой вопрос вскоре после публикации, протестировав в Azure. В Elastic Pool можно добавлять только базы данных, расположенные на одном сервере баз данных.