У нас есть база данных, которая используется довольно интенсивно (почти 100% запросов - это select), и теперь база данных становится узким местом.
Мы искали решение, которое позволило бы масштабировать эту базу данных (горизонтально) и запрашивать балансировку нагрузки между несколькими экземплярами.
В идеальном сценарии мы ищем способ динамического добавления и удаления экземпляров (аналогично тому, как вы можете масштабировать экземпляры веб-приложения Azure).
На данный момент лучшим решением, которое я нашел, является «Чтение масштабирования с использованием реплик только для чтения»: https://docs.microsoft.com/en-us/azure/azure-sql/database/read-scale-out. И это похоже на идеальное решение, единственная проблема в том, что я не понимаю, как я могу добавить туда еще реплики?
РСУБД обычно не может масштабироваться по горизонтали без какого-либо разделения данных. Кроме того, данные в СУБД должны быть нормализованы, что не подходит для каждого набора данных.
Следует также отметить, что динамическая масштабируемость отличается от автомасштабирования. Автомасштабирование - это когда сервис автоматически масштабируется на основе критериев, тогда как динамическое масштабирование позволяет масштабировать вручную с минимальным временем простоя.
Одним из возможных решений может быть это Сценарий PowerShell для мониторинга и масштабирования отдельной базы данных SQL
Также решением может быть переход на Cosmos DB.