Назад | Перейти на главную страницу

Запуск множества баз данных под одним экземпляром

Лучше всего иметь один экземпляр с несколькими базами данных или распределить базы данных по нескольким экземплярам?

Предполагая SQL Server, потому что это то, что я знаю ...

Я рекомендую хранить их в одном экземпляре.

Это обеспечивает более высокую производительность при доступе к данным из разных баз данных (т. Е. Из базы данных A вам нужно получить что-то из базы данных B). Если они являются отдельными экземплярами, связь должна осуществляться через связанные серверы, с использованием именованных каналов или чего-то еще. В пределах одного экземпляра вы можете получить доступ ко всем БД напрямую (с учетом ограничений безопасности).

Объединение их всех вместе дает некоторое потенциальное воздействие на единую точку отказа, но я считаю, что сам SQL Server довольно надежен. Может произойти сбой всей машины (отключение всех экземпляров), но я не встречал отказов такого рода, которые делали бы использование единственного экземпляра более предпочтительным.

Поскольку вы можете управлять хранилищем на уровне файлов, разделение на несколько экземпляров здесь не поможет.

Вы можете подумать о последствиях для безопасности, если каким-то образом подвергнетесь атаке с использованием SQL-инъекции (которой нет оправдания, поскольку ее так легко предотвратить!). Но если у вас есть связанные серверы между экземплярами, вы больше не получаете защиты.

Я бы предложил один экземпляр вместо нескольких в одном ящике, если вы не пытаетесь решить очень специализированную проблему. Это упрощает администрирование сервера и использует меньше ресурсов для накладных расходов.

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

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

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

С точки зрения памяти (опять же, предполагая MS SQL Server) несколько баз данных в одном экземпляре обычно приводят к более эффективному использованию.

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

Вот некоторые плюсы и минусы наличия баз данных в одном экземпляре SQL Server.

Плюсы:

  • более легкое администрирование
  • более легкое управление объектами безопасности (логины SQL, роли)
  • меньшая сложность
  • лучшая производительность при доступе к одной базе данных из другой (поскольку они обе находятся в одном экземпляре SQL Server)
  • более эффективное использование памяти и других ресурсов

Минусы:

  • «Все яйца в одной корзине» может быть более опасным в случае сбоя экземпляра SQL Server. Но если экземпляры находятся на одной машине, вся машина может выйти из строя, так что это не имеет значения.
  • Инъекции SQL Server и другие угрозы безопасности. Вам не нужно беспокоиться об этом, если вы правильно настроили систему.
  • Невозможность иметь разные версии SQL Server

Я чувствую, что это полностью зависит от ваших технических и деловых требований, дизайна базы данных, вашей инфраструктуры, будущего роста базы данных и уровня критичности баз данных.

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

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