3

Orchard CMS を使用して、SaaS アプリケーション用のマルチテナント ポータル ソリューションの実装を検討しています。マルチテナンシーがファースト クラスの機能であるように見えることを嬉しく思いますが、それを実現するには、a) テーブル プレフィックスを使用してテナントごとに一連のテーブルを作成するか、b) 持っている必要がありますテナントごとに個別のデータベース。

10,000 人以上の顧客向けのソリューションを構築しようとしていますが、テナントごとに物理的なデータ スキーマを変更する必要があるものは、スケーリングできません。私たちの SaaS アプリケーションでは、すべてのテーブルで tenantID 列を使用し、さらに nHibernate フィルターと大量のインデックスを使用して、スケーリングできるようにしています。

オーチャードでも同じことをしたいです。したがって、各テナントのテーブルの代わりに、tenantID を持つテーブルの 1 つのセットが必要です。次に、データ アクセス レイヤー (NHib) でフィルターを使用して、常に適切なデータを取得します。

質問:

1) これは可能ですか? 2) 誰かがこれをやったことがありますか? 3) 最善の方法について何か考えはありますか? MultiTenancy/NHiberate モジュールのソースを直接変更するつもりでした。

4

1 に答える 1

2

可能ですが、実行するのは非常に困難です。

また、Orchard マルチテナンシーのシナリオではない可能性が最も高いですが、詳細がわからないと確信が持てません。

この機能は、完全に独立したアプリケーションが必要であり、(ほとんど) アプリケーション間で共有する必要がない場合に最適です。たとえば、共有ホスティングなどです。各テナントには内部オブジェクト インフラストラクチャ全体の独自のコピーがあるため、主な欠点はメモリ オーバーヘッドです。

マルチテナンシーを微調整する丸い穴に四角いペグを挿入しようとする代わりに、はるかに簡単なアプローチは、シングル テナントを使用し、目的のマルチテナンシー スキームを独自の別のモジュールにゼロから実装することです。たとえば、次のことができます。「テナント」コンテンツ タイプを持ち、それを中心にモジュールを構築します。

于 2012-11-04T23:51:47.427 に答える