Хочется понять как организовать хранение данных. Проектирую сервис на YII2. Сервис что то вроде CRM. Пользователь регистрируется, получает CRM на потдомене, может создавать аккаунт для менеджеров с назначением разных прав. Менеджеры могут оставлять сообщения заводить клиентов и тд.
Правильно ли хранить каждую CRM на потдомене в одной бд? Если да то как изолировать их друг от друга?
Например в таблице с сообщениями будет хранится много записей, достаточно ли делать выборку только по ID CRM.
Где можно почерпать знаний по проектированию и разработке подобных систем на PHP.
У нас для каждого клиента свой поддомен и своя база данных. Клиенты регистрируются после бюрократической процедуры - заключения договора. Если хранить всех клиентов в одной базе - вы все равно придете к процедуре партиционирования таблиц, иначе все будет Очень медленно работать.
В нашем варианте есть сложности - обновление структуры БД, нужно применить миграции для каждой БД. Сейчас это решается bash скриптом + файлом со списком клиентов. Плюс конечно тоже есть - если миграция отвалилась - мы сломали только одного клиента, остальные могут работать нормально. Так что если правильно настроить деплой - проблем не будет.