Структура приложения CakePHP: одна БД и приложение против нескольких БД и приложений - PullRequest
0 голосов
/ 09 января 2012

У меня есть короткий концептуальный вопрос:

Недавно я начал разрабатывать приложение, в котором я могу (на лету) создавать клиентов, которые, в свою очередь, могут создавать проекты, в которых есть много других вещей (собственные логины и т. д.).

Структура URL - это "example.com/client1/project1", чтобы пользователи могли войти в их проект.Пока все хорошо, мне удалось все это с DB-моделью и маршрутизацией и т. Д.

Пример структуры:

-> Client -> Project -> User
                     -> Forum -> Topic -> Post
                     -> Message
                     -> Setting
                     -> [...] (you get the gist)

Однако будет только несколькоклиентов (<15), поэтому мне было интересно, если бы было лучше использовать папку приложения SEPARATE и БД для каждого клиента.Потому что таким образом, я также смогу развернуть обновления для каждого клиента отдельно. </p>


Вот мои начальные мысли по этому вопросу (для отдельных установок):

Pro: отдельные приложения

  • Возможность развертывания обновлений и новых функций отдельно для каждого клиента (вполне возможно, что некоторые новые функции нежелательны для некоторых клиентов)
  • Ошибка в одной БД повлияет только на одного клиента

Против: Отдельные приложения

  • Больше работ по обслуживанию с точки зрения мониторинга всех приложений и примененияглобальные обновления (но учитывая количество клиентов, это на самом деле не проблема)
  • Может привести к путанице с различными версиями и т. д.
  • Нет возможности реализовать суперадмин, который может получить доступ ко всем приложениям (необходимодолжно быть сделано на уровне приложения)
  • Сложнее создавать общие функции и данные (например, выставлять счета клиентам)
  • Плохая практика?

Должен ли я когда-либо шЕсли объединить все установки, то это действительно не будет проблемой, потому что все основано на UUID.Кроме того, я по-прежнему буду реализовывать клиентскую модель, а все остальное зависит от нее: таким образом, это будет просто вопрос объединения баз данных и файлов клиентов в одну установку приложения (учитывая, что все хотят одинаковую функциональность).

Примечание. Ядро-библиотека CakePHP будет доступно в любом случае, так что здесь проблема не в этом.

Что бы вы подумали в этом случае?Единственная проблема, которую я вижу, - это выставление счетов:

Но это не проблема - вызывать центральную БД из каждого клиента, чтобы сообщить ей: «Эй, я только что создал что-то, что нужно выставить».

Если я делаю это в приложении single - как исключить определенных клиентов из некоторых обновлений?Или я должен просто заставить всех привыкнуть к новым функциям?

1 Ответ

2 голосов
/ 09 января 2012

Из-за накладных расходов, о которых вы также упоминаете, я бы выбрал «Отдельные приложения», только если было требование, которое сделало его абсолютно необходимым.

EDIT : вам не нужно иметь разные схемы БД для настройки доступных функций для клиентов

...