【发布时间】:2021-09-27 02:14:22
【问题描述】:
我正在开发一个应用程序,该应用程序允许用户上传图片并为彼此的图片评分(所以用 1-5 星投票)。但我一直认为我正在构建的数据库系统效率不够高。希望有人可以给我建议。
现在我有一个名为“images”的数据库表。它有以下字段:
- doc_id
- user_id
- 图片
- amount_of_votes
- 评分
每次用户投票时,amount_of_votes 都会获得 +1,评分的计算公式为(评分*旧票数 + 新票数)/新票数
但这给我带来了以下问题:
- 如果 2 位用户同时查看同一张图片(例如,有 2 票 1 星的 iamge),则如果第 1 位用户投 5 星,则计算新评级。但是,如果第二个用户再次投票 1 星,那么最后投票的用户仍然会获得 2 票 1 星,并且不会看到新的 5 星评级。
- 我也认为这样做不安全。理论上,用户可以将数量更改为 1,将评分更改为 1。
我想建立一个新的投票系统,其中有一个名为 votes 的新表,它保存 user_id 和用户给出的投票。但这给了我以下问题:
- 如果用户点击了一个非常受欢迎的图片,那么如果必须加载大量投票并计算平均值。这效率不高。
有谁知道我可以使用的最好的系统是什么?我在互联网上花了几天时间,但我还没有找到最好的系统......
【问题讨论】:
标签: google-cloud-firestore vote