3

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

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

残念ながら、これには多くの欠点があります - 管理性: データベースへの変更は、既存のすべてのデータベースに対して行わなければなりません - SQL スクリプトによる作成方法は扱いにくく、信頼性が低い - ユーザーがホームページからログインできるようにしたい (EG . www.site.com) ですが、サブドメインによって使用するデータベースが決まるため、現在これを行うことはできません。- メトリクス/顧客の使用状況を保持するための中心的な場所が必要です。

そのため、アプリケーションのデータベース構造に最適なソリューションは何かについて、私たちは悩んでいます/未定です。

現在、3 つのオプションがあります。 - 複数のデータベース設計を維持する - すべての企業を 1 つの DB にマージし、「companyId」でそれぞれを識別します - 特定のテーブルが「コア データベース」にあり、他のテーブルが顧客固有のデータベースにある、ある種の分割モデルデータベース。

これをどのように行うのが最善だと思うかについて、貴重なアドバイスをいただけますか? フィードバック/情報をいただければ幸いです。

どうもありがとう、

kSeudo

4

1 に答える 1

2

ちょうど私の提案:

顧客関連のデータを異なるデータベースに保持し、認証関連のデータを共通のデータベースに保持する方がよいと思います。したがって、ユーザーがログインすると、ユーザーが属するドメインのエントリがあり、そのドメインにリダイレクトされ、対応するデータベースとデータにアクセスする必要があります。

繰り返しますが、データベースへの変更に関する懸念事項です。各データベースに個別に変更を実装する必要があります。これにもメリットがあると思います。一部のお客様は、プロセスに応じていくつかの変更を要求する場合があります。したがって、顧客ごとに別々のデータベースを保持している場合、これは簡単に管理できます。

于 2012-05-05T04:53:46.223 に答える