0

我一直在阅读很多关于在数据存储上进行聚合查询的方法(通过 stackoverflow 和其他地方)。答案的优势在于它不能以愉快的方式完成。但是这些答案已经过时了,同样的人也倾向于声称你不能order by在数据存储上做一些事情。

就像今天存在的那样,您实际上可以ORDER BYdatastore上指定。所以我想知道聚合是否也是可能的。

考虑我有五个候选人 Alpha、Brave、Charie、Delta 和 Echo 的场景;和 10,000 名选民。我想按顺序检索候选人和每个人收到的票数。我将如何在数据存储上执行此操作?我正在使用java。

另外,顺便说一句,如果答案仍然是否定的,并且扇入是我最好的选择:扇入线程安全吗?通过扇入,我的意思是保留一个明确的计数器来计算每个候选人收到的选票(在一个单独的table)中。当多个用户同时投票时,我会遇到竞争条件或数据中的其他一些故障吗?

4

1 回答 1

1

如果通过聚合您的意思是让数据存储为您计算总票数,那么不,数据存储不会这样做。

做你所描述的最好的方法是:

  • 为每个候选者创建一组分片计数器(谷歌搜索应用引擎分片计数器)。
  • 当有人投票时,更新给定代表的分片计数器。
  • 当您想阅读投票时,查询您的代表,然后为每个代表查询分片计数器并将它们汇总。
  • Memcache 为了获得更好的性能,文档中提供的 GAE 分片计数器示例很好地说明了这一点。
于 2013-05-30T21:53:45.757 回答