複数の企業で使用される CakePHP のアプリケーションに取り組んでいます。アプリケーションのパフォーマンス、スケーラビリティ、コードの管理性、およびセキュリティを確保したいと考えています。
現在のベータ版では、顧客ごとに新しいデータベースが作成されます。新しい会社がサイトに参加すると、SQL スクリプトを実行して空のデータベースを作成します。これには次の利点があります: - より良いセキュリティ (企業のユーザーは互いに分離されています) - サブドメインを介してデータベースを設定できます (IE: monkey.site.com、site_monkey データベースを使用) - 単一のコード ベース。- データが小規模なデータベースに分割されるため、SQL クエリのパフォーマンスは通常非常に良好です。
残念ながら、これには多くの欠点があります - 管理性: データベースへの変更は、既存のすべてのデータベースに対して行わなければなりません - SQL スクリプトによる作成方法は扱いにくく、信頼性が低い - ユーザーがホームページからログインできるようにしたい (EG . www.site.com) ですが、サブドメインによって使用するデータベースが決まるため、現在これを行うことはできません。- メトリクス/顧客の使用状況を保持するための中心的な場所が必要です。
そのため、アプリケーションのデータベース構造に最適なソリューションは何かについて、私たちは悩んでいます/未定です。
現在、3 つのオプションがあります。 - 複数のデータベース設計を維持する - すべての企業を 1 つの DB にマージし、「companyId」でそれぞれを識別します - 特定のテーブルが「コア データベース」にあり、他のテーブルが顧客固有のデータベースにある、ある種の分割モデルデータベース。
これをどのように行うのが最善だと思うかについて、貴重なアドバイスをいただけますか? フィードバック/情報をいただければ幸いです。
どうもありがとう、
kSeudo