··
我们经理说:在项目启动的时候.我们经理要把权限数据放到application 里,这样每个用户登录的时候。直接取application 里的数据跟用户对比然后放到session 里。要是1000人就不用每个都去数据库查了...
我想请问下。这样子效率是会高..但是综合考虑是不是还有所欠缺...我觉得这样服务器冗余会比较多...
还有的就是
bs 架构 在服务端存的东西多好。还是在客户端存的东西多好。。。如果要你做的话。。你会怎么存...
有更好的方法提供吗???请高手们提下意见...
其实这个问题换句话说就是"服务器缓存"
什么数据放置到缓存中合适,具体项目具体分析。
缓存总体策略就是。数据不会被第三方应用更改,数据大小在可接受范围,具体多少看自己项目的需求,非系统关键数据,数据变动频率低,还有就是项目要经常调用的数据。这些都可以纳入缓存管理。
像你说的用户权限,可以使用服务器端缓存。一般权限都是基于用户-->角色-->权限这种基础模型。角色能有多少呢。不会成百上千。当然关键还要看你自己的系统需求。
支持楼上所说
具体问题具体分析
[quote]把权限数据放到application 里,这样每个用户登录的时候。直接取application 里的数据跟用户对比然后放到session 里。要是1000人就不用每个都去数据库查了... [/quote]
这种方案存在的问题:
1、权限数据放在application里,这是一种缓存的策略。相应的,缓存的数据更新怎么处理?在业务系统里对权限进行修改,就需要同步对application的数据进行更新。这个操作的代价可大可小,需要具体到系统进行取舍。
2、从application数据对比放入到用户的session里,这就是说用户的权限是没有办法实时更新的。极限情况,如果用户的session永远有效,那么你就永远无法调整该用户的权限了。
上面两个问题要取决于业务场景了。比如管理员修改某用户权限后要求立刻能反映出来,你们那种方案就无法满足了。
不知道使用H2等内存数据库能否满足要求。
把权限数据放到application 里,那也就是放到内存中缓存了。
用内存数据库感觉可行,选择几个关键字段建立一个内存数据库放到内存中,DAO做一些修改更新处理同时更新两个数据库。
只选择几个关键字段建立内存数据库,开销应该不大,当然这个要更具实际应用来看,查询用户权限的时候做下修改,使用内存中的数据库进行查询,也没必要放到session 里了,session 也是存放到服务器内存中,现在使用了内存数据库结果应该一样,而且修改量最小。
或者简单使用 hashmap