2012-05-03 16 views
3

私たちは複数の企業で使用されるCakePHPのアプリケーションに取り組んでいます。私たちは、アプリケーションのパフォーマンス、スケーラビリティ、コード管理性、セキュリティを確保したいと考えています。CakePhp複数テナント - 単一DB対複数DB

現在のベータ版では、お客様ごとに新しいデータベースが作成されています。新しい会社がサイトに参加すると、空のデータベースを作成するためにSQLスクリプトを実行します。 - より良いセキュリティ(企業のユーザーは互いに分離されています) - サブドメイン(IE:monkey.site.com、site_monkeyデータベースを使用)でデータベースを設定できます - シングルコードベース。 - データがより小さいデータベースに分割されるため、SQLクエリのパフォーマンスは一般的に非常に優れています。

は今、残念ながら、これは多くの欠点 持っています - 管理性を:データベースへの変更は 、既存のすべてのデータベース間で起こることがある - 創造のSQLスクリプトの方法は、私たちが を希望として信頼性が不格好とではありません - 私たちは、ユーザーができるようにしたいですホームページ(EG。www.site.com)からログインしてください。しかし、サブドメインがどのデータベースを使用するかを決定する現在、これを行うことはできません。 - 私たちは、メトリクス/顧客の利用を維持するための中心的な場所を希望します。

私たちは、アプリケーション用のデータベース構造にとって最良の解決策が何であるかについて断裂しています。

現在、我々は3つのオプションを参照してください。 - 複数のデータベースの設計 してください - 1 DBにすべての企業をマージし、「企業ID」 によって各を識別 - 特定の表は、「コアデータベース」であり、分割モデルのいくつかの種類を、他は顧客固有のデータベースにあります。

あなたは私たちがこれを最善を尽くすべきと思う方法について貴重なアドバイスを提供することができますか? フィードバック/情報をいただければ幸いです。

多くのおかげで、

kSeudo

答えて

2

ちょうど私の提案:私はあなたが共通のデータベースに異なるデータベースや認証関連のデータでは、顧客関連データを保持するより良いと思います

だから、ときにユーザーがログインしますユーザーが所属するドメインを持つエントリがあり、そのドメインにリダイレクトし、対応するデータベースとデータにアクセスする必要があります。

再度、データベースへの変更が懸念されます。各データベースに変更を個別に実装する必要があります。私はこれにもいくつかの利点があると思います。一部の顧客は、プロセスに応じてほとんど変更を求めない場合があります。これは、異なる顧客に別々のデータベースを保管している場合、簡単に管理できます。

関連する問題