2016-03-03 61 views
-3

我正在開發一個競爭平臺的網站,讓不同的學生可以參加常規(每天)比賽(每個比賽持續3小時)。每場比賽都有100個選擇題。然後在比賽結束後,發佈按總分數排序的所有參與者的結果。如何爲競爭平臺設計好的數據庫結構?

我正在使用MongoDB和Meteor框架。我已經實現了這一點,但我意識到數據庫設計真的不好。

有什麼更好的方法可以設計數據庫結構,然後可以擴展爲10k用戶?

所以,我有以下的數據庫設計(從視高層次點):
用戶:他們的數據,test_1_result,...,test_n_result]
問題: (A,B,C,D或E),變體_A,變體_B,...,變體_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_point s,]

或換句話說,你能否給我提供任何材料,我可以學到更多關於如何設計這樣的競爭性競賽平臺的實用知識?

+0

mongodb的一般規則是將所有內容標準化爲 – corvid

+0

https://en.wikipedia.org/wiki/Database_normalization –

回答

0

有許多人在負載測試,縮放流星以及如何規劃和設計有效的數據庫模式方面撰寫博客文章。流星廚師寫了一篇關於你如何設計和使用流星https://themeteorchef.com/blog/managing-data-in-meteor-applications中的數據庫shcema的文章。要測試當前結構的效果,請使用負載測試程序,例如https://github.com/alanning/meteor-load-testhttps://github.com/meteorhacks/meteor-down或Kadira https://kadira.io/的託管工具。卡迪拉還提供一門課程,教你如何製作「快速防彈流星應用」https://bulletproofmeteor.com/basics/introduction