0

私たちは、クライアントユーザーごとに予約できるサービスを開発しています。戦略はありますか - 各クライアントのデータベース (MS SQL SERVER) のテーブルは適切ですか?

このような戦略は、複雑なテーブル ロックを簡素化し、排除すると考えています。

4

1 に答える 1

1

マルチテナントアプリケーションを構築しようとしているようです。クライアントごとに1つのテーブルをお勧めしません。むしろ、次の2つの解決策のいずれかをお勧めします。

  1. すべてのクライアント(テナント)データを同じテーブルに統合し、識別子で分離します。つまり、すべての最上位テーブルには、各クライアントのデータを識別して分離する「ClientId」または「TenantId」と呼ばれる外部キーがあります。このアプローチの欠点は、データベースがはるかに高速になり、大きなデータベースはその小さなデータベースを管理するのがより複雑になることです。さらに、開発者がClientIdでのフィルタリングを忘れたクエリを作成し、あるクライアントが別のクライアントのデータを見るリスクがあります。

  2. クライアントごとに1つのデータベース。より極端なソリューションですが、クライアントが独自のアプリケーションをホストする場合、各クライアントのデータのサイズに大きな違いがある場合、またはクライアントがデータ分離の絶対的な保証を必要とする場合に役立ちます。

于 2011-04-20T15:18:56.263 に答える