Лучше всего иметь один экземпляр с несколькими базами данных или распределить базы данных по нескольким экземплярам?
Предполагая SQL Server, потому что это то, что я знаю ...
Я рекомендую хранить их в одном экземпляре.
Это обеспечивает более высокую производительность при доступе к данным из разных баз данных (т. Е. Из базы данных A вам нужно получить что-то из базы данных B). Если они являются отдельными экземплярами, связь должна осуществляться через связанные серверы, с использованием именованных каналов или чего-то еще. В пределах одного экземпляра вы можете получить доступ ко всем БД напрямую (с учетом ограничений безопасности).
Объединение их всех вместе дает некоторое потенциальное воздействие на единую точку отказа, но я считаю, что сам SQL Server довольно надежен. Может произойти сбой всей машины (отключение всех экземпляров), но я не встречал отказов такого рода, которые делали бы использование единственного экземпляра более предпочтительным.
Поскольку вы можете управлять хранилищем на уровне файлов, разделение на несколько экземпляров здесь не поможет.
Вы можете подумать о последствиях для безопасности, если каким-то образом подвергнетесь атаке с использованием SQL-инъекции (которой нет оправдания, поскольку ее так легко предотвратить!). Но если у вас есть связанные серверы между экземплярами, вы больше не получаете защиты.
Я бы предложил один экземпляр вместо нескольких в одном ящике, если вы не пытаетесь решить очень специализированную проблему. Это упрощает администрирование сервера и использует меньше ресурсов для накладных расходов.
Очень хорошее правило для системного администрирования - это то же правило, которое хорошо работает для программирования, или действовало, когда я все еще делал это: делайте вещи настолько сложными, насколько они должны быть, чтобы решить проблему должным образом, не больше и не меньше . Несколько экземпляров обычно усложняют задачу, чем один экземпляр с несколькими БД.
Если вам нужно разделить вещи, чтобы защитить их, я бы предложил несколько установок сервера (здесь вы можете виртуализировать на одном физическом блоке), потому что я не уверен, что я бы рассматривал разные экземпляры в одном блоке как границу безопасности.
Независимо от того, о каком SQL-сервере мы говорим, в качестве общего принципа я бы по возможности запускал все базы данных под одним экземпляром по всем причинам, уже упомянутым другими. Более того, если вы дойдете до точки, когда один экземпляр не очень хорошо справляется с нагрузкой, пора добавить еще один компьютер, а не другой экземпляр. Единственные исключения, о которых я могу думать, - это приложения, которые будут работать только со своим собственным экземпляром. Конечно, такого программного обеспечения лучше избегать или по возможности поместить на другую машину.
С точки зрения памяти (опять же, предполагая MS SQL Server) несколько баз данных в одном экземпляре обычно приводят к более эффективному использованию.
Мы запускаем несколько экземпляров, когда этого требует готовое приложение. Что касается того, что мы разрабатываем, мы бросаем все в одном экземпляре.
Вот некоторые плюсы и минусы наличия баз данных в одном экземпляре SQL Server.
Плюсы:
Минусы:
Я чувствую, что это полностью зависит от ваших технических и деловых требований, дизайна базы данных, вашей инфраструктуры, будущего роста базы данных и уровня критичности баз данных.
Если вы чувствуете, что ваша инфраструктура способна справиться с давлением большого количества баз данных, пользователей приложений в одном экземпляре, тогда никто не будет мешать вам размещать их в одном экземпляре после принятия во внимание вышеуказанных моментов.
Но рекомендуется хранить наиболее важную и воспроизводимую базу данных на одном экземпляре. Остальное все зависит от дизайна базы данных и планирования емкости.