Задать вопрос

SaaS: одна БД на клиента, или общая база данных?

Предположим, стоит задача разработать CRM-систему и предоставлять к ней доступ в виде SaaS, что значит, что клиентов будет много, но при этом данные разных клиентов недоступны другим. Под клиентом понимается один аккаунт, например, аккаунт фирмы «Рога и копыта» для ведения учета своих клиентов.


Видно два варианта хранения данных: хранить все в общей базе данных и разделять права логикой приложения, или хранить данные в базе индивидуальной для каждого клиента? какие есть недостатки и преимущества первого и второго вариантов?


Дополнительные условия:

В качестве СУБД возьмем, для примера, MySQL, а в качестве платформы облако Amazon.
  • Вопрос задан
  • 6643 просмотра
Подписаться 8 Оценить 1 комментарий
Ответ пользователя hexen К ответам на вопрос (4)
@hexen
Я настойчиво советую использовать лучше postgresql для такой задачи. Ну просто лучше он работает, чем mysql.
У каждого из твоих подходов свои плюсы и минусы.

Если одна база:
+
Удобно оперировать одной базой
Удобно накатывать скрипты обновления на одну базу
Удобно администрировать одну базу

— база разрастается сильно, если много клиентов (существенный минус)
Таблицы разрастаются быстродействие снижается

Если много баз
+
база не разрастается сильно
Таблицы не разрастаются

— Не удобно оперировать несколькими базами базой
Не удобно накатывать скрипты обновления на много баз
Не удобно администрировать много баз, усложняются административные интерфейсы

Я бы пошел следующим путем:
Если много данных в среднем от клиента, то под каждого клиента отдельная база.
Если не много данных в среднем от клиента, а клиентов много, то делал бы в одной базе.
Ответ написан
Комментировать