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

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

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

решение1

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

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

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

решение2

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

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

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

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

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

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

решение3

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

решение4

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

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

Связанный контент