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 回答