Я создал собственную CMS и хотел бы сделать ее мультиклиентной, при этом дублируя как можно меньше. Я не имею в виду многопользовательский режим, поскольку разные люди в одной и той же организации обращаются к одной и той же программе, я имею в виду несколько клиентов, которые в разных организациях используют собственный доступ к одной и той же программе, как если бы они были независимыми приложениями.
Я понимаю принцип совместного использования функций и думаю, что мне нужно поместить все созданные мной функции в общую папку в родительском каталоге.
Мне кажется, я по крайней мере разбираюсь в том, как работает код, но структура базы данных (sql) кажется самой большой проблемой.
Как это обычно достигается?
Мои таблицы довольно просты, и после некоторого чтения я вижу, что это нормально - просто добавить «client_id» или «app_id» или что-то подобное в каждую таблицу и запись. Таким образом, нет дубликатов баз данных, однако тогда вы получите смесь всех данных клиентов в одних и тех же таблицах. Похоже, проблема заключается в том, что если эта программа станет очень большой со многими клиентами, при которой данные умножаются, то же касается и скорости системы для всех. Однако я еще не на этом этапе, так что не стоит ли мне беспокоиться об этом далеко вперед и пересечь этот мост, когда он придет, потому что сейчас жертва скорости будет незначительной?
Можно ли каким-то образом разделить базы данных, не удваивая работу, если я изменю структуру таблицы в будущем или добавлю дополнительные поля и т. Д.?
Я понимаю, что на это может быть сложно ответить, не зная, как я структурирую свои таблицы, но они довольно просты, как:
unique_id | title | modified_date | content
xx hello 0000-00-00 00:00:00 i am content
Лучшее, что я могу себе представить, это то, что тогда это станет:
client_id | unique_id | title | modified_date | content
xx xx hello 0000-00-00 00:00:00 i am content
Как я уже сказал, я вижу, что это может столкнуться с некоторыми проблемами, в основном с раздутостью, но сейчас я не вижу другого пути - возможно, у вас есть другой способ взглянуть на это. Спасибо.