Каков наилучший способ реализации мультитенантности в базе данных Azure
Мы планируем внедрить мультитенантное приложение в облаке Azure. Я ищу лучший способ реализовать это на уровне БД. Схема БД огромна, у нас есть сотни таблиц, распределенных по нескольким модулям. И размер данных варьируется для каждого клиента. Для некоторых это может быть сотни строк в таблицах. Но для некоторых это могут быть миллионы строк. Каков наилучший подход для реализации Elastic DB в подобных сценариях?
Как я могу разработать шардинг в этом случае? Один арендатор на осколок или список арендаторов? Если я создам список арендаторов для каждого сегмента, и у соседних арендаторов будет много данных, и он будет переполнен. Как мы можем эффективно найти ключ шарда в разделе?
Если я использую один сегмент для каждого сегмента, могу ли я увеличить один фрагмент в зависимости от размера данных?
Кто-нибудь сталкивался с такими сценариями? Пожалуйста, помогите мне с примерами ссылок?
Спасибо за помощь!
1 ответ
Дэвид Макогон прав в своем комментарии - есть много способов сделать это. Я даю ответ только потому, что Microsoft потратила много времени, чтобы найти решение для этого сценария. Если вы решили использовать подход с несколькими базами данных, обязательно посмотрите Elastic Pools и Elastic Client Library. Это обеспечивает поддержку для создания сегментов, управления картами сегментов и распределенных запросов по сегментам. Создание этого самостоятельно было бы большой работой.