Скорее всего, вы собираетесь потратить немало времени на реструктуризацию своей базы данных.
Первый шаг - создание таблицы для размещения списка «Арендатор».Затем вам нужно добавить этот TenantId практически к каждой таблице в вашей системе, чтобы никто не наступал друг на друга.Вы можете пропустить любые таблицы, которые имеют глобальный характер.Одним из примеров может быть список кодов состояния.
Однако все, от пользователей до данных, которые они имеют, и т. Д. Должны иметь этот идентификатор.Кроме того, измените все свои индексы, чтобы учесть тенантид.
Как только вы это сделаете, вам нужно будет изменить все ваши запросы, чтобы учесть тенантид.
Один столбецтаблица арендаторов должна быть URL портала.Как customername.oursite.com или что-то еще.Таким образом, вы можете указать несколько ссылок на один и тот же код.Когда сайту нужно использовать текущий tenantid, просто посмотрите его по URL-адресу, который был передан.
Если бы я делал это, я планировал бы тратить 1-2 часа на таблицу в базе данных, чтобысделать это "мультитенант".Очевидно, что некоторые таблицы (и их запросы) будут работать быстрее;другие займут больше времени.
Кстати, это не касается таких вещей, как настройка пользовательского интерфейса (внешнего вида) для каждого арендатора или чего-либо подобного.Если вам нужно сделать это, то вам нужно будет либо создать на сервере каталог для каждого арендатора, в котором будут храниться их таблицы стилей, либо загрузить его непосредственно из БД (которая имеет свои проблемы с кэшированием).
Как правило, вы разрабатываете это в начале проекта.Переоборудование уже (или почти) завершенного проекта - это PITA.
Наконец, тестируйте, тестируйте, тестируйте и проводите дополнительные тесты.Вам нужно будет убедиться, что каждый запрос извлекает только те данные, которые ему абсолютно необходимы.