Performance 如何基于用户对对象的访问筛选视图

Performance 如何基于用户对对象的访问筛选视图,performance,Performance,我是新手,有一个设计问题。 这个问题可能很难回答,但我还是会试试看 假设我们在系统中创建了2500个文件对象。我们的用户可以访问某些文件 当我们显示与文件关联的文件或对象的不同视图时,我们需要根据登录用户对文件的访问权限过滤视图。如果每个视图都要求应用程序运行所有文件,我想这对性能是不利的。处理这种情况的一般做法是什么?对登录用户有权访问的文件进行缓存 这是一个一般性的问题,但我仍然可以补充说,我们正在使用MySQL和Hibernate 谢谢 我认为,如果使用2500个文件,那么性能可能不会有问

我是新手,有一个设计问题。 这个问题可能很难回答,但我还是会试试看

假设我们在系统中创建了2500个文件对象。我们的用户可以访问某些文件

当我们显示与文件关联的文件或对象的不同视图时,我们需要根据登录用户对文件的访问权限过滤视图。如果每个视图都要求应用程序运行所有文件,我想这对性能是不利的。处理这种情况的一般做法是什么?对登录用户有权访问的文件进行缓存

这是一个一般性的问题,但我仍然可以补充说,我们正在使用MySQL和Hibernate


谢谢

我认为,如果使用2500个文件,那么性能可能不会有问题。金额不是很大。但数字可能增长得更快

正如我看到的,您使用了一些关系数据库。为文件创建表,为用户创建表,并创建UserFileMapping表以存储用户到文件的关系。您的目标是实现与用户到文件的多对多关系。这就是如何实现它

然后,您可以使用以下简单表达式查询每个用户的所有文件 选择distinct from Files internal join fileusermapping on File.ID==fileusermapping.FileID,其中fileusermapping.UserID=='your_user_ID'查询非常近似,我很长时间没有使用sql,忘记了很多东西

它将为您的用户返回所有文件,并且将以非常有效的方式进行,因为数据库具有非常好的优化