Правильное разделение данных в Веб-приложении?

Здраствуйте, прошу совета у хабрасообщества.

Я проектирую сервис который будет заниматься обслуживанием некоторых организаций. Логически сервис разделяется на две части:
  1. Морда — включает в себя всякую мишуру вроде Wiki, Landing Page и профиль клиента-организации (биллинг, состояние аккаунта и тд),

  2. Непосредственно сервис, в котором сидят сотрудники клиента-организации.




Фреймворк Play 2.0, планирую хостится у Heroku.

На данном этапе не совсем ясно как разделить инстансы и базы данных.


Следует ли разделять базу данных по клиентам: один клиент — одна база данных? Или стоит хранить все одной базе, но к каждой таблице привязать столбец с указанием принадлежности к клиенту, и не будет ли проблем с производительностью, администрированием и масштабированием?


Если выбрать вариант с разделением баз данных, то как это все разделить? Ведь для этого необходимо запустить инстанс сервиса с указанием базы данных для данного клиента, получается что мы делаем инстансы разнородными, а это может быть препятствием для масштабируемости. К тому же, насколько я знаю, Heroku требует от web процессов однородности.


Могу предположить вариант с однородными инстансами имеющими подключение к каждой БД, но это попахивает оверкилом.


Предполагаемый стек:
  • Play 2.0
  • Anorm
  • JDBC
  • PostgresSQL
  • Heroku



К Heroku не привязан, может быть что-нибудь более подходящее?
  • Вопрос задан
  • 4327 просмотров
Пригласить эксперта
Ответы на вопрос 1
@relgames
Java Developer
У нас сделан второй вариант (одна база). Если клиент большой, то под него выделяется отдельный инстанс приложения со своей базой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы