2012-02-18 9 views
0

私たちはSAASアプリケーションを計画しています。複数のデータベースまたは1つのデータベース?

今はデータベースポイントです。私たちのすべてのクライアントを持つ単一のリレーショナルデータベース、または各クライアントの複数のデータベース?
私は、単一のデータベースは大丈夫だと思っていますが、適切な設計と秘密を持っています。 パフォーマンスはどうですか?

これは給与管理SAASであり、各クライアントは会社に基づいて従業員管理を行う必要があります。

答えて

2

すべてのクライアントのアプリケーションを個別に管理するかどうかによって異なります。 「クラシック」SAASアプリケーションの場合、多くのクライアントがあり、ほとんどのクライアントが変更を必要とするまでアプリケーションを変更する準備ができていない場合、1つのデータベースが必要です。一方、5つのクライアントのソリューションをホストしているだけで、クライアント3が何か異なるもの(給与計算アプリケーションの可能性が高い)を望んでいて、自分の要件を満たす必要がある場合は、別のデータベースを使用します。

パフォーマンスに関して(SaaSとデータベースがある場合)、パーティショニングやパフォーマンス上の問題に終わった場合に実装できる他のパフォーマンス改善手法(例:レプリケーション)には多くの方法があります。その場合、データベースを1つだけ維持する必要があります。

+0

ありがとうございました!非常に役立つ、これは私が正しいaproach(単一のデータベース) –

3

単一のデータベースを使用する場合は、バックアップとセキュリティの考慮事項にも影響します。単一のデータベースにすべてを入れることで、バックアップ/リストアはすべての顧客に影響を与えます。スケーリングの決定にも影響します。顧客あたりのDBは、新しいdbサーバーとデータベースの再分散を追加できることを意味します。 1つのデータベースとは、将来的にクラスター化する必要があるかもしれないことを意味します。

一方、複数のdbsはより多くの管理オーバーヘッドを意味します。また、スキーマの変更が必要な拡張機能を提供する場合はさらに多くの作業が必要になります。

1

これは、分散データ・サーバ・モデル(別のサーバー上の各データベース)を予定していない限り、設計のトレードオフ

パフォーマンスが単一のデータベース対複数とは何の関係もありませんです。

複数のデータベースを保持すると、不必要な作業が追加されます。その時点で、何が起きるのか分からず、どれが最良の解決策であるかを考えてみましょう(顧客が多くの変更を必要とする場合、データベースのサイズは急速に増加します...)。ビジネスは急速に成長しているので、各顧客のデータベースを簡単に分離することができます。

アルバート・アインシュタイン:Everything should be made as simple as possible; But not simpler.

1

それはサービスとしてのソフトウェアだ場合は、回復力だけでなく、単にパフォーマンスを検討する必要があります。

個人的には、すべてのクライアントに対して単一のデータベースを使用しますが、ロードバランシングを使用して複数のサーバーにレプリケートして、すべてのクライアントが同時に月末/給料日。これにより、1台のサーバーがクラッシュした場合のフェールオーバーも可能になります。

大規模なアプリケーションでは、管理用に読み取り/書き込みが可能なデータベースサーバーを1つまたは2つ、レポート用に複数の読み取り専用データベースサーバーを使用し、レプリケーションを再度使用することも考えられます。また、オンラインアクセスを維持しながら、単一のサーバーをダウンして、高速、オフライン、一貫性のあるデータベースバックアップを行うことができます。

関連する問題