одна база данных на клиента или все клиенты в одной базе данных.какой из них я должен использовать для онлайн-приложения? - PullRequest
6 голосов
/ 02 января 2012

Итак, у меня есть это приложение, которое будет иметь несколько модулей, от управления проектами до бухгалтерских модулей.Вопрос в том, должна ли я иметь одну базу данных для каждого клиента (компании) или одну базу данных, в которой хранится все?

1) какая из них будет лучше с точки зрения производительности?управлять несколькими базами данных или ими можно управлять.
3) У нас будет одно и то же приложение для всех пользователей, что означает, что будет использоваться одна и та же схема независимо от количества баз данных.
4) некоторые клиентыэтого будет много (например, бухгалтеры могут добавлять до 2 миллионов строк в год в одну таблицу), в то время как другие будут использовать гораздо меньше данных.

что, по вашему мнению, мне следует использовать?

Ответы [ 3 ]

6 голосов
/ 03 января 2012

1) Наличие отдельных баз данных позволяет легче распределять нагрузку на несколько хостов, во многих отношениях поднимает крышу; диск, память, блокировка, процессор, время резервного копирования и так далее. Если вы серьезно относитесь к размещению миллионов строк в mysql, это, безусловно, хорошая идея с отдельными базами данных (не только схемами) и даже отдельными экземплярами, чтобы потребители, потребляющие ресурсы, не навязывали время простоя менее потребляющим.

2) Будет ровно в N раз сложнее управлять, где N - это количество баз данных: o) Эти дополнительные расходы необходимо сравнить со стоимостью использования только одной базы данных / схемы и вместо этого управлять разделением клиента в коде. , Управлять им также намного сложнее, если вам приходится звонить в службу поддержки клиентов вашей хостинговой компании или даже в местную сварливую компанию dba, вместо того, чтобы просто запускать аккуратный скрипт из консоли каждый раз, когда вам нужно обновить схему или создать новую базу данных. 1003 *

В некоторых базах данных и средах персистентности есть поддержка мультитенантности, у Oracle это есть, и поддержка начинает появляться в Hibernate 4.

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

3 голосов
/ 02 января 2012

Теоретически, несколько баз данных будут лучше для производительности.То есть, если бы вы могли разместить их на отдельных дисковых контроллерах.Но на самом деле все они, скорее всего, будут находиться на одном диске, поэтому прирост производительности, скорее всего, не будет.Кроме того, дополнительные диски лучше использовать в качестве дополнительных элементов RAID-массивов, чем в качестве дополнительных отдельных логических дисков, на которые можно выгружать данные.

С точки зрения обслуживания, несколько баз данных станут кошмаром.Каждое изменение базы данных необходимо будет выполнить N раз, где N - количество клиентов.Конечно, вы никогда не будете делать это вручную, поэтому вам всегда придется делать это программно, и довольно скоро вы начнете понимать, насколько легко все будет, если вы просто сделаете те же изменения с помощью нескольких щелчков мыши на консоли управления вместонеобходимость писать код, чтобы сделать их для вас каждый раз.

0 голосов
/ 02 января 2012
Безопасность

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...