我正在为竞争平台开发网站,不同的学生可以参加常规(每天)比赛(每次持续3小时)。每场比赛都有100个多项选择题。比赛结束后,所有参与者的结果按总分数排序。
我正在使用Meo框架的MongoDB。我已经实现了这个,但我意识到数据库设计真的不好。
有没有更好的方法可以设计数据库结构,然后可以为10k用户进行扩展?
所以,我有以下数据库设计(从高级别的角度来看):
用户:[他们的数据,test_1_result,...,test_n_result]
问题:[课程(15门课程之一),正文,答案(A,B,C,D或E),variant_A,variant_B,...,variant_E以及描述问题的其他内容]
结果:[user_email,user_name,user_details,number_of_points_for_course_A,number_of_points_for_course_B,...,number_of_points_for_course_Z,total_points,]
或者换句话说,您能否向我提供任何材料,让我可以学习更多有关如何设计竞赛比赛平台的实用知识?
答案 0 :(得分:0)
有很多人在负载测试,扩展流星以及如何规划和设计有效的数据库模式上撰写博客文章。 Meteor厨师在Meteor https://themeteorchef.com/blog/managing-data-in-meteor-applications中写了一篇关于你如何设计和使用数据库shcema的帖子。要测试当前结构的效果,请使用负载测试器(例如https://github.com/alanning/meteor-load-test或https://github.com/meteorhacks/meteor-down)或Kadira https://kadira.io/中的托管工具。 Kadira还提供一门课程,教您如何制作快速和防弹流星应用程序" https://bulletproofmeteor.com/basics/introduction。