1

私は初心者で、デザインに関する質問があります。質問はあいまいかもしれませんが、とにかく試してみます。

システムに 2500 個のファイル オブジェクトがあるとします。特定のファイルにアクセスできるユーザーがいます。

ファイルまたはファイルに関連付けられたオブジェクトのさまざまなビューを表示する場合、ログインしているユーザーのファイルへのアクセスに応じてビューをフィルター処理する必要があります。すべてのビューでアプリケーションがすべてのファイルを実行する必要がある場合、パフォーマンスが悪いと思います。そのような状況を処理するための一般的な慣行は何ですか? ログインしたユーザーがアクセスできるファイルのキャッシュを作成しますか?

これは一般的な質問ですが、MySQL と Hibernate を使用していることを追加できます。

ありがとう!

4

1 に答える 1

0

2500 個のファイルを扱う場合は、おそらくパフォーマンスの問題ではないと思います。金額はさほど大きくありません。しかし、数字はより速く成長する可能性があります。

ご覧のとおり、リレーショナルデータベースを使用しています。ファイル (Files) 用のテーブルを作成し、ユーザー (Users) 用のテーブルと UserFileMapping テーブル (ユーザーとファイルの関係を保存するため) を作成します。あなたの目標は、ユーザーからファイルへの多対多の関係を実装することです。これは、それを実装する方法のチュートリアルです。

次に、次のような単純な式でユーザーごとにすべてのファイルをクエリできます Select distinct from Files inner join FilesUserMapping on File.ID == FilesUserMapping.FileID where FilesUserMapping.UserID == 'your_user_id'(クエリは非常に概算です。SQLを長時間使用していないため、多くのことを忘れています)

データベースは非常に最適化されているため、ユーザーのすべてのファイルが返され、非常に効果的な方法で作成されます。

于 2013-01-31T01:17:20.920 に答える