
多数のデータベースを持つ単一のインスタンスを用意するのが最適ですか、それともデータベースをいくつかのインスタンスに分散させるのが最適ですか?
答え1
非常に特殊な問題を解決しようとしているのでなければ、同じボックス上で複数のインスタンスではなく 1 つのインスタンスを使用することをお勧めします。これにより、サーバーの管理が容易になり、オーバーヘッドに使用するリソースが少なくなります。
システム管理の非常に良いルールは、プログラミングでうまく機能するルールと同じです。または、私がプログラミングをしていた頃に機能していたルールと同じです。問題を適切に解決するために必要なだけ複雑にし、それ以上でもそれ以下でもありません。通常、複数のインスタンスは、複数の DB を持つ 1 つのインスタンスよりも複雑になります。
セキュリティ保護のために分離する必要がある場合は、複数のサーバーのインストール (ここでは 1 つの物理ボックスに仮想化できます) をお勧めします。1 つのボックス上の異なるインスタンスをセキュリティ境界と見なすかどうかはわかりません。
答え2
私が知っているのは SQL Server なので、それを前提としています...
それらを 1 つのインスタンス内に保持することをお勧めします。
これにより、データベース間のデータへのアクセスのパフォーマンスが向上します (つまり、データベース A 内からデータベース B から何かを取得する必要があります)。別々のインスタンスである場合は、名前付きパイプなどを使用して、リンクされたサーバーを介して通信を行う必要があります。単一のインスタンス内では、すべての DB に直接アクセスできます (セキュリティ制約の対象)。
これらをすべて組み合わせると、単一障害点の危険性がいくらか生じますが、SQL Server 自体はかなり堅牢です。マシン全体が故障する (すべてのインスタンスがダウンする) 可能性はありますが、このように単一インスタンスの配置が望ましいと判断されるような障害は見たことがありません。
ストレージはファイル レベルまで管理できるため、複数のインスタンスに分割しても役に立ちません。
何らかの理由で SQL インジェクション攻撃を受けた場合 (防御するのは非常に簡単なので、言い訳の余地はありません)、セキュリティへの影響について考えるかもしれません。ただし、インスタンス間にリンク サーバーがある場合、実際にはそれ以上の保護は得られません。
答え3
どの SQL サーバーについて話しているにせよ、一般的な原則として、他のユーザーがすでに述べた理由から、可能な限りすべてのデータベースを 1 つのインスタンスで実行することをお勧めします。さらに、1 つのインスタンスで負荷を十分に処理できなくなった場合は、別のインスタンスではなく、別のマシンを追加する時期です。考えられる唯一の例外は、独自のインスタンスでのみ実行されるアプリケーションです。もちろん、そのようなソフトウェアは回避するか、可能であれば別のマシンに配置するのが最善です。
答え4
メモリの観点から見ると (ここでも、MS SQL Server を想定)、単一インスタンス内に複数のデータベースがあると、一般的にはより効率的に使用されます。
既製のアプリケーションで必要な場合は、複数のインスタンスを実行します。私たちが開発するものについては、すべてを 1 つのインスタンスにまとめます。