论文部分内容阅读
目前,高校的数据库课程以及研究生入学考试希望考核学生实际编写SQL语句的能力,评测其实机操作的能力。与笔试的考核方式不同,实机操作需要实际运行学生所编写的SQL语句,为此,需要一个可以供学生在线编写SQL来答题的考试系统,同时在学生提交自己编写的SQL后运行并给出结果,并以通过的题目数量来作为学生考试的成绩。基于以上背景,本文提出并设计和实现了一个在线SQL考试系统,并介绍了在线SQL考试系统的题库模块、学生群组模块、考试模块、SQL编辑模块、SQL执行模块、判分模块的设计和实现细节,以及模块间的联系。它为教师提供题库管理、学生群组管理的功能,并可组织和发起考试,而学生则可在系统中参加考试,线上答题并提交SQL,实时得到运行结果,在考试结束后看到自己的成绩。它使用容器技术来快速创建和销毁考试相关题目的数据库运行环境,以生成不同的题目要求的表结构和表数据。同时,由于容器可容易地部署在不同机器上,并且同一镜像创建的容器具有相同状态,因此系统可以通过增加部署的容器来快速提升并发执行学生提交SQL的能力。为了增加系统的并发处理能力,充分利用CPU的多个核心,本文设计并实现了一个多进程Web应用架构,使用Master-Worker模型来处理多进程之间的协同和任务分配。为了处理多进程架构中的有状态服务,本文设计了一个基于Master进程内存空间的共享内存模型,来来存储和维护进程间需要共享的数据。本文对系统的功能、重要接口和性能进行了相关的测试,通过设计测试方案和验证测试结果来保障系统的可靠性。在性能测试中,系统在模拟的300个用户的持续并发请求下,总平均请求成功率接近95%,平均TPS为230。测试结果表明系统已基本具备支持一场小规模在线考试的能力。目前,在线SQL考试系统已上线运行且投入使用,并已支持过一场200人的在线考试顺利完成。系统完整服务了考试的整个流程,且未遇到性能问题。