Mar*_*arc 12 database-design mongodb
我正在尝试在MongoDB中建立一个投票系统.你可以把它想象成一个类似于reddit的投票系统.要求:
我在这里看到两种方法(如果我错了,请纠正我!):
我也想过将投票嵌入到按小时分组的"桶"中的想法.
对于第2号要求,第1号的速度非常快,但我不知道在这种情况下是否可以使用第3号要求.
对于第2号要求,第2号的速度要慢一些,我不确定3号要求/如何实现它的表现会是什么样的(map reduce?).
基本上我似乎需要从第3项要求的合理快速解决方案开始,然后确保要求No 2不会太慢.想法?
使用嵌入式方法.为每个对象添加一个参数,用于每小时得分,每日得分,每月得分等.最近添加另一个布尔参数 - 最近投票,最近每小时和最近每日.创建一个在对象上运行map-reduce的脚本,以计算和更新这些参数.
该脚本将通过cron运行三种变体.
我们的想法是尽量减少对正在运行的分数计算脚本无关的对象的不必要处理(每小时应该只运行自上次每小时运行以来已经投票的对象,或者尚未投票的对象并需要重置为0).另一个好处是*-score值不仅需要根据对象投票计算.例如,您可以包含页面视图,或者其他任何内容.关于这种方法的想法?