Вам придется нести со мной здесь, чтобы, возможно, немного исправить некоторые термины, поскольку я даже не знал, что это попало во все "многопользовательское" программное обеспечение как категорию услуг, но здесь делает.
Я разработал систему членства (в PHP) для клиента. Теперь мы рассматриваем его как полностью размещенное решение для наших других клиентов, предоставляя субдомен (или даже собственный домен).
Параметры, которые, как мне кажется, хранятся в таблице, касаются хранения данных:
Вариант 1. Храните все в одной большой базе данных и используйте поле "client_id" в таблицах, которые ему нужны (около 30 таблиц, к которым оно относится) и имеют "таблица клиентов", хранящая их основные настройки, данные и т.д., и домен для их сопоставления. Затем это просто устанавливает глобально доступную переменную, содержащую их индивидуальный идентификатор клиента - я, очевидно, должен будет изменить каждый отдельный запрос, чтобы проверить столбец client_id.
Вариант 2. Имейте мастер-таблицу с таблицами "общая ссылка" и таблицей "клиенты". Затем есть "блоки" других баз данных, каждая из которых содержит, скажем, 10 клиентов. Клиент получит свои собственные таблицы базы данных с префиксом их идентификатора клиента. Это добавляет немного защиты для защиты от просмотра других данных клиента, если что-то пошло не так.
Вариант 3. Точно так же, как и вариант 2, за исключением того, что у вас есть 1 база данных для каждого клиента, полностью изолируя их от других клиентов и теоретически предоставляя немного больше защиты, если 1 клиентская таблица были взломаны или иным образом повреждены, это никому не повлияет. Самый большой недостаток заключается в том, что при развертывании нового клиента необходимо создать всю базу данных, пользователя и пароль и т.д. Может ли это также вызвать слишком много накладных расходов, или это будет почти так же, как если бы у вас были все в одном базы данных?
Несколько пунктов: некоторые из этих клиентов будут иметь 5000+ клиентов вместе со всеми подробностями для этих клиентов - вот почему вариант 1 может быть немного проблемой - если у меня есть 100 клиентов, которые могли бы равняться более полумиллиона строк в 1 таблице.
Правильно ли я думаю, что вариант 3 - лучший способ пойти в ситуации, когда ключом является безопасность данных клиента (и информации о платежах). Из рекомендаций, которые у меня были, несколько человек сказали, что идут с вариантом 1, потому что "его легче", однако я действительно этого не вижу. Я вижу это как потенциальное узкое место в очереди, так как я уверен, что я могу перемещать клиентов намного проще, если у них есть собственная база данных.
(FYI. Система основана на PHP на основе MySQL)