7

私はこの質問について(グーグルとここの両方で)いくつかの調査をしましたが、私の状況に一致すると感じたものは何も見つかりませんでしたので、尋ねています。

現在、1つのアカウント(1つの環境モデル)を持ち、1つのアカウント(多くの環境)に拡張しようとしているプロジェクトがあります。環境は(少なくともテーブル構造に関する限り)同一であり、約100個のテーブルが必要になります。私は2つの可能なアプローチの間で引き裂かれています:

  1. 単一のデータベースを使用し、テーブルのプレフィックスを付けて各環境とプレフィックスのないアカウントテーブルを分離します
  2. 多くのデータベースを使用します-中央アカウントデータベース、および環境ごとに個別のデータベース(中央データベースには、フォーラムソフトウェアのテーブルなど、他の中央の1回限りのデータが含まれる可能性があります)

どちらのアプローチでも、パフォーマンスが大幅に向上/懸念されますか?データは(少なくとも今のところ)すべて同じ物理サーバー上にあります。クエリは、単一の環境にアクセスするだけで済みます(非常にまれな状況を除く)。もちろん、メインアカウントの記録です。

4

5 に答える 5

3

興味深い質問です。標準的な答えとして、1つのインスタンスにすべてのアカウントを実行させることをお勧めします。つまり、プレフィックスソリューションです。これは、ホスティングプロバイダー全体で使用されているアプローチです。

1つのRDBMSでショーを実行するのは理にかなっているようです。バックアップやその他のシステム全体のタスクが簡単になります。パフォーマンスの観点から、アカウントごとに個別のプロセスを実行するよりも、1つのインスタンスを実行する方がはるかに効率的であると思います。

最新のRDBMSのほとんどは、アカウントごとにインスタンスごとに複数回設定するのではなく、このタイプの機能をサポートするアドオン/機能を備えているため、負荷分散を有効にする必要がある場合は、「プレフィックス」モデルのスケーリングも簡単になります。

最新のデータベースシステムは、1秒あたり数千のリクエストを簡単に処理でき、カスタマイズされた(プレフィックス付きの)テーブル名を検索することでパフォーマンスを低下させることはありません。アカウントを分離する単純な階層(アカウントプレフィックス)の方法を考え出すことができる限り、何千ものテーブルを実行するのに問題はないはずです。

唯一の潜在的な欠点はセキュリティです。また、ほとんどの場合、複数のサーバーを使用してもセキュリティの問題は解決しません。

于 2012-06-28T02:50:46.190 に答える
3

1つのデータベースだけを管理する方が簡単だと思います。これにより、多くのデータベースが正しく構成されていることを心配するよりも、開発と構成がはるかに簡単になります。

パフォーマンスの面では、DBMSにクラスタリング/分散のものを処理させることができるので、それについて心配する必要はありません。データを自分で分割しても、通常は処理が速くなることはありません。DBMSは(通常)それよりもはるかに優れた仕事をすることができるからです。

于 2012-06-28T02:25:30.423 に答える
3

複数のデータベースが機能しており、さまざまなデータベースベンダー(DB2、Oracle、MySQL)がありますが、その苦痛の一部は、各データベースが異なるグループによって所有されているという事実に起因している可能性があります。しかし、(アプリではなく)データベースにデータを参加させる必要がある場合(今は状況はまれだと思いますが、待っています...)、マルチサーバーソリューションを後悔します。

于 2012-06-28T02:30:11.267 に答える
0

さまざまな環境の将来の変更を可能にするために、多くのデータベースを使用すると思います。すべてのサイトが使用する静的データについて話しているのは疑わしいです。各サイトは独自のデータセットに値します...

他の理由がない場合は、(前に述べたように)変更を許可します。

于 2012-06-28T02:24:44.497 に答える
0

私が現在取り組んでいるプロジェクトは、その点で似ています。複数のサイトに1つのアカウント。

私が求めていた解決策は、委任された認証です。これは、認証のみを処理し、IDに関する検証可能なアサーションを発行する1つのサービスです。これは、承認と組み合わせることもできます。何が必要かを知るために、OpenIDプロジェクトと認証のためのOAuth2を見ることができます。

このサービスのセットアップは簡単ではありませんが(OpenIDサイトにはセットアップガイドがあります)、コードを変更せずに環境を別の物理的な場所に移動する柔軟性を提供します。実際、単一のデータベースを自由に保持し、他の環境よりも牽引力が高まったときに、1つの環境を専用のマシンに移動することもできます。

于 2012-06-28T02:44:19.207 に答える