私たちは、クライアントユーザーごとに予約できるサービスを開発しています。戦略はありますか - 各クライアントのデータベース (MS SQL SERVER) のテーブルは適切ですか?
このような戦略は、複雑なテーブル ロックを簡素化し、排除すると考えています。
私たちは、クライアントユーザーごとに予約できるサービスを開発しています。戦略はありますか - 各クライアントのデータベース (MS SQL SERVER) のテーブルは適切ですか?
このような戦略は、複雑なテーブル ロックを簡素化し、排除すると考えています。
マルチテナントアプリケーションを構築しようとしているようです。クライアントごとに1つのテーブルをお勧めしません。むしろ、次の2つの解決策のいずれかをお勧めします。
すべてのクライアント(テナント)データを同じテーブルに統合し、識別子で分離します。つまり、すべての最上位テーブルには、各クライアントのデータを識別して分離する「ClientId」または「TenantId」と呼ばれる外部キーがあります。このアプローチの欠点は、データベースがはるかに高速になり、大きなデータベースはその小さなデータベースを管理するのがより複雑になることです。さらに、開発者がClientIdでのフィルタリングを忘れたクエリを作成し、あるクライアントが別のクライアントのデータを見るリスクがあります。
クライアントごとに1つのデータベース。より極端なソリューションですが、クライアントが独自のアプリケーションをホストする場合、各クライアントのデータのサイズに大きな違いがある場合、またはクライアントがデータ分離の絶対的な保証を必要とする場合に役立ちます。