写点什么

考试试卷存储方案

作者:小虾米
  • 2022 年 4 月 27 日
  • 本文字数:513 字

    阅读完需:约 2 分钟

[数据结构设计]

试卷原始信息使用 redis 的 hase 作为存储试卷的数据结构,key 为试卷的 id,内部各字段定义如下:

name: 试卷的名字

date: 试卷加入的时间

abstract: 试卷的简介

author: 出题人

info: 试卷内容详细信息的 protobuf 或 json 的序列化信息


学生的答卷使用 hash 作为存储的数据结构,key 为学号+试卷 id

student:学生名字

class:所属班级

answer:答卷的 protobuf 或 json 的序列化信息


另外为了便于试卷的管理,可以按照院系、年份、年级等多维度建立试卷的索引。每种索引使用一个单独的 sorted set 存储数据,member 使用试卷 id,socre 可以使用试卷的插入时间,或者所属的年级


为了方便老师批改,使用 sorted set 存储某门课程下所有学生的答卷的 key。 这个 sorted set 的 key 使用年份+课程代号+试卷 id 组成,member 是学生的答卷 key, score 使用提交的时间


[读写分析]

  1. 考试开始时,学生从不同的 slave 读区试卷信息。

  2. 学生答题结束后,提交时间到 redis master 节点

  3. 老师批改时,从 slave 节点拉取当门课程下的学生答卷


[集群数量及性能分析]

  1. 使用 3 台哨兵机器组成哨兵集群,可以保证一台哨兵挂了之后,还能继续正确选主操作

  2. 试卷的读请求量按照之前课程中估算的 5w/s 计算,一台 redis 足够使用,但是为了应对突发情况,建议部署 2 台 slave+1 台 master

用户头像

小虾米

关注

还未添加个人签名 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
考试试卷存储方案_架构实战营_小虾米_InfoQ写作社区