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