サービスとしてのソフトウェアなど複数のテナントをサポートするアプリケーションを構築する際のベストプラクティスは何ですか?マルチテナントアプリケーションの構築におけるベストプラクティスは何ですか?
このトピックで展開しているホワイトペーパーへのリンクは非常に高く評価されています。データベースの
サービスとしてのソフトウェアなど複数のテナントをサポートするアプリケーションを構築する際のベストプラクティスは何ですか?マルチテナントアプリケーションの構築におけるベストプラクティスは何ですか?
このトピックで展開しているホワイトペーパーへのリンクは非常に高く評価されています。データベースの
Oren Eini氏の一連のブログ記事に貴重なアドバイスがあります。
これは、以前の記事へのリンクで、シリーズの最後の記事の一つである:#Bでhttp://ayende.com/Blog/archive/2008/08/16/Multi-Tenancy--Approaches-and-Applicability.aspx
:バグに非常になりやすい:
短所を行うには簡単:
A.あなたのテーブルの上に
の長所をtenant_id列を入れて、同じデータベース上のすべてを置きますあるテナントから別のテナントにデータを漏洩させるのは簡単です。
B.は、(PostgreSQLがスキーマそれらを呼び出す)
賛否同じデータベース上のすべてを置くが、独自の名前空間内の各テナントを入れて:
短所オプションよりも優れたデータ漏洩保護を提供します:しませんすべてのデータベースでサポートされています。 AFAIK PostgreSQLとOracleはそれをサポートしています。
C.セットアップテナント
あたり1つのデータベース長所:別の
短所に1つのテナントから漏れるデータの絶対にチャンスがない:新しいテナントを設定すると、より複雑です。データベース接続は高価です。
私はGuy Naorから上記のアイデアを学んだだけです。彼のプレゼンテーションへのリンクは次のとおりです。 http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html
、すべてのデータベース・サポート・スキーマが、異なる用語に。 MySQLでは、スキーマとデータベースは同義です。 MSSQLにもスキーマがサポートされています。本番環境のマルチテナントアプリケーションは、MySQL上の〜4000(現在)のデータベース/スキーマで動作します。 –