【发布时间】:2009-06-04 00:01:50
【问题描述】:
我正在尝试为 bbPress(开源论坛软件)编写一个插件,该插件的工作方式类似于 Hacker News (http://news.ycombinator.com/)。
具体来说,我想使用以下算法对论坛主题的顺序(bbPress 称它们为“主题”)进行排序:
sort_value = (p - 1) / (t + 2)^1.5
where p = total votes for each topic from users
t = time since submission of each topic in hours
我希望能够使用 MySQL 根据这个计算出的 sort_value 对主题进行排序。
topics 表中的相关字段如下所示:
topic_id bigint(20)
topic_start_time datetime
这是悬而未决的,但我想会有另一个表格来存储用户的个人投票,这样我们就可以知道用户是否已经投票了。另一个表将存储每个主题的当前投票总数。也许该表中会有另一个字段存储最新计算的 sort_Value?
为了 100% 准确,sort_value 应该在 每个 新投票后更新。但是,这会给数据库服务器增加过多的负载,尤其是当我们尝试更新所有主题时。如果必须,我们可以通过仅计算最后 X # 个主题的 sort_value 来限制数据集。我们还可以通过仅定期更新 sort_value 来限制负载(例如,通过 cron 作业每 5 分钟更新一次)。
这些快捷方式可能会使负载可接受,但我更喜欢可以更好地扩展的更优雅的解决方案。
您将如何构建它? :-)
【问题讨论】:
标签: mysql database database-design