gpt4 book ai didi

mysql : Best way to deal with data like average rating of restaurants etc?

转载 作者:行者123 更新时间:2023-11-29 21:01:11 25 4
gpt4 key购买 nike

我有一个 MySQL 表,用于存储餐厅评级,例如:

id | user_id | res_id | rating_value | review_id |
1 | 102 | 5567 | 4.0 | 26 |
2 | 106 | 5543 | 3.5 | 27 |
3 | 112 | 5567 | 3.0 | 31 |

我有每家餐厅的餐厅简介网页,其中显示用户对餐厅的“数据”,例如“平均评分”

用户每天可以对餐厅进行评论和评分,但次数有限,因此一家餐厅每天可能会收到来自一个用户的许多新评分行。

我的问题是:

  1. 我应该每天(或每周?)运行一个 cronjob 来SELECT AVG( rating_value) 每家餐厅来更新餐厅的“评级”,这会消耗大量内存吗?

  2. 我是否应该保留 X 个最近的“评分”并使用 cronjob 每天为每家餐厅选择 AVG( rating_value)

3.或者我应该只在提交新的“评级”时运行SELECT AVG( rating_value)

最佳答案

听起来您希望保持数据库负载较小,除非为该餐厅提交新的评级,否则该值不会更改。

我建议将此信息缓存在 memcache 或 redis 中,因为在数据库中复制此平均值是多余的。然后,您可以为此设置一个过期时间(例如一小时),并且仅在缓存解决方案中没有该值时才前往数据库获取该值。

如果您想要实时解决方案,那么您应该连接评论提交逻辑来刷新缓存的餐厅平均值。这将保证您的应用程序始终显示最准确的平均评分。

如果您想将数据存储到数据库中,那么我建议使用数据库触发器来更新存储此平均评分字段的表,或者像缓存解决方案一样,提交审核 Hook 来更新此值。

关于mysql : Best way to deal with data like average rating of restaurants etc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com