Ema*_*sev 2 performance database-design rating-system
假设您正在为下一个堆栈溢出设计数据库模式,更具体地说,是处理问题评级的模式部分.
我假设您使用的表格如下:
评级(question_id,user_id,rating)
...这两个都会记录评级并确保没有用户在同一个问题上投票两次.
仅此表可以处理评级数据,但可能会导致查询速度变慢.
考虑到性能,您是否会考虑将每个问题的评级总和存储在问题表中,即使这些数据是多余的,因为它来自评级表中的数据?
我通常首先从标准化模型开始,而不是对问题表中的评级总和进行去标准化.
然后,当应用程序运行良好时,我会做一些性能测试,以确定应用程序是否处理足够好的负载 - 与我期望在生产中的负载相比.
如果它不能很好地处理负载,我会检查瓶颈 - 并纠正最重要的瓶颈,直到应用程序运行良好.
一旦应用程序投入生产,如果网站有很多opf用户,那么现在是时候进行一些额外的优化了.
简单来说:
最后,是的,也许,将问题表中的评级总和去标准化可能会有所帮助; 但你需要这样做吗?
这是真正的问题;-)