Software as a Service など、複数のテナントをサポートするアプリケーションを構築する際のベスト プラクティスは何ですか?
このトピックを詳しく説明しているホワイト ペーパーへのリンクは大歓迎です。
Software as a Service など、複数のテナントをサポートするアプリケーションを構築する際のベスト プラクティスは何ですか?
このトピックを詳しく説明しているホワイト ペーパーへのリンクは大歓迎です。
データベースの場合:
A. すべてを同じデータベースに配置し、テーブルに tenant_id 列を配置します
長所:やりやすい
短所: バグが非常に発生しやすい: あるテナントから別のテナントにデータが漏洩するのは簡単です。
B. すべてを同じデータベースに配置しますが、各テナントは独自の名前空間に配置します(postgresql はそれらをスキーマと呼びます) 。
長所: オプション A よりも優れたデータ漏洩保護を提供します。
短所: すべてのデータベースでサポートされているわけではありません。AFAIK PostgreSQL と Oracle はそれをサポートしています。
C. テナントごとに 1 つのデータベースをセットアップする
長所: あるテナントから別のテナントにデータが漏洩する可能性はまったくありません
短所: 新しいテナントの設定はより複雑です。データベース接続は高価です。
上記のアイデアは、Guy Naor からのみ学びました。彼のプレゼンテーションへのリンクは次のとおりです 。
Oren Eini による一連のブログ投稿で、貴重なアドバイスが見つかるかもしれません。
これはシリーズの最後の投稿の 1 つで、以前の投稿へのリンクがあります: http://ayende.com/Blog/archive/2008/08/16/Multi-Tenancy--Approaches-and-Applicability.aspx