java会话之外的任何其他选项都可以在spring MVC应用程序中保存数据
我正在开发在线考试软件,成千上万的学生可以同时从他们的学院/学校进行在线考试。因此,考虑到并发点击率和服务器性能,我正在寻找存储一些考试相关数据的不同且最佳的方法:
在申请中,每个学生都会随机得到问题。我正在考虑在session
中存储学生智能问题,但我担心在session
中存储这么大的(问题及其选项)数据
session
对象会变得太大,不是吗
此外,还有一些与考试相关的设置/配置,我想随时准备(我不想每次都从数据库中获取配置)
# 1 楼答案
我想有些学生也会问同样的问题。如果你真的有30万个不同的问题,你现在可以停止阅读了
我想你不需要储存任何东西。生成一个随机的
masterSeed
,取一个studentId
,然后计算seed = secureHash(masterSeed, studentId)
。用这个seed
来选择问题。如果需要,重新计算关于存储问题,像往常一样使用数据库和缓存,忘记会话
要求提供有关问题选择的详细信息
对于“你能不能提供更多关于使用种子和缓存选择问题的信息”的回答是“实际上不能”。为什么
无论OP使用什么随机算法来选择问题,都会对我的上述提议起到同样的作用。只需创建
new Random(seed)
(种子来自上面)并运行相同的算法1web和数据库服务器能够实现的所有缓存魔法也适用于此。我的观点是,将问题存储在会话中没有任何好处。恰恰相反:
因此,您有更多的IO(缓存的数据可以简单地丢弃),更多的内存消耗,并且您不能使用数据库服务器的内存,以防它在不同的机器上运行
1如果算法不是真正随机的并且试图为坐在一起的学生选择不同的问题,这可能会变得复杂,但这是一个不同的问题