9

我有一个应用程序,其中主要实体是 a Story,用户可以为每个故事投票。每次投票都会vote_count为故事增加一个。

我担心关于故事的写作争论,所以我计划为每个故事使用分片计数器来跟踪投票。

现在我的问题是:如何获得按票数排序的故事列表?例如:显示 50 个最高票数的故事。

我最初的想法是定期运行一个任务来读取计数器值并更新实际故事的属性。可以通过投票查询的结果稍微过时。

4

2 回答 2

2

听起来您可能正在做一些过早的优化。我会跳过分片计数器,直到很明显你需要它们。如果你很确定你会,那么一定要从他们开始。至于运行周期性任务并缓存每个故事的属性,这可能是另一个过早的优化。

我对谷歌应用引擎没有直接经验,所以希望有人能分享一些信息。

于 2010-08-22T22:01:15.220 回答
1

定期添加数据可能是应对计数器分片分散的好策略。

您还可以尝试其他不使用分片的计数策略,如其他地方所述:

http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding

(您将计数器保存在内存缓存中,并定期将累积值刷新到数据存储区)

您的应用程序对轻微计数错误有多重要?

于 2010-08-25T21:07:33.043 回答