2

MYSQLデータベースであるCodeIgniterPHP上に構築されたWebアプリケーションがあり、PHPActiveRecordsを使用しています。私たちは成長と拡大を続けており、ホワイトラベルの付いたアプリケーションを提供する必要があります。私が直面している唯一の問題は、データベースの処理方法です。2つのサイト間で大量のデータが共有されるため、2つのデータベース接続は必要ありません。私はマルチテナンシーを調査しましたが、それは素晴らしいオプションのように思えますが、すべてのActiveRecord検索を書き直して、tenant_id ='this site'の条件を設定し、コードを作成するときに同じことを行うように従業員をトレーニングする必要がある場合は、スケーラブルではありません。A)多くの変更を加えずにマルチテナンシーをPHPActiveRecordsに統合する方法、またはB)マルチテナンシーよりも優れたソリューションを提供する方法について誰かが考えていますか。

前もって感謝します。

4

1 に答える 1

5

クライアントの数に応じて、1 つのホストでクライアントごとにスキーマを作成できます。共通テーブルのテーブル名に共通データベース名のプレフィックスを付け、クライアント クエリに依存して既定のデータベースを使用します。

エントリポイントは次のようになります。

$pdo->query('USE client_12345');

クエリは次のようになります。

$pdo->query('SELECT * FROM clientspecificdata WHERE ...');

$pdo->query('SELECT * FROM common.data WHERE ...');

これについて注意してください: これは、間違ったクライアントにデータを公開するリスクが比較的高くなります。これがシナリオに適していることを確認してください。複数の接続を使用すると、はるかにうまくいく場合があります。

于 2013-01-30T19:11:58.950 に答える