1

私は、各顧客がシステムへの固有のポータルを持つ顧客向けの Web アプリケーションの設計に取り組んでいます。各顧客は、他の顧客のユーザーを気にせずに独自のユーザー セットを管理できる必要があるため、2 つの異なる顧客が両方ともユーザー jasonsmith を持つことができる必要があります。

同時に、ある顧客は他の顧客の存在をまったく知らず、これが複数顧客システムであることも示していません。

そのようなシステムを実装するための今日の標準は何ですか? このようなシステムを実装する最善の方法について詳しく知るには、どこに行けばよいでしょうか。

4

1 に答える 1

3

あなたが話していることはmultitenancyと呼ばれます。

これにはいくつかのアプローチがあります。

最も一般的なアプローチは次のとおりです。

単一データベース

すべてのテナントが同じデータベースを共有します。したがって、すべてのテナントに関する情報を含む 1 つのテナント テーブルが作成されます。他のすべてのテーブルは、テナント ID を外部キーとして使用します。

問題は、ユーザーが自分の情報にのみアクセスできるようにする必要があることです (たとえば、ユーザーは uri の ID を変更しようとする可能性があります)。したがって、ユーザーがアクセスしようとしている各オブジェクトを検証する必要があります。

複数のデータベース

一部のデータベース エンジン (RavenDB など) は、複数のデータベースを問題なく処理できます。これは、各顧客が独自のデータベースを取得することを意味します (ユーザーが識別された後、各リクエストの最初にロードします)。

そのため、認証中に 1 人の db ユーザーがいて、テナントと顧客ごとに 1 つのデータベースを識別できます。

このソリューションの利点は、テナントが互いのデータベースにアクセスできないことです。(アカウントがハッキングされていない限り)

于 2012-08-21T17:37:29.350 に答える