我已经阅读了很多关于在数据存储上进行聚合查询的方法(通过stackoverflow和其他地方),大多数答案是不能以一种令人愉快的方式进行,但是这些答案都是过时的,同样的人也倾向于声称你不能在数据存储上进行order by
之类的操作。
现在,您实际上可以在数据存储上指定ORDER BY
,所以我想知道聚合是否也是可能的。
考虑这样的场景,我有五个候选人阿尔法,勇敢,查理,德尔塔和回声;和10,000个投票者。我想检索候选人和每个人收到的选票数量。我如何在数据存储上做到这一点?我正在使用java。
另外,顺便说一句,如果答案仍然是否定的,而扇入是我最好的选择:扇入是线程安全的吗?扇入的意思是保留一个显式计数器来计算每个候选人收到的选票(在一个单独的table
中)。当多个用户同时投票时,我是否会遇到争用条件或数据中的其他错误?
2条答案
按热度按时间0s7z1bwu1#
如果您所说的聚合是指让数据存储为您计算投票总数,那么不,数据存储不会这样做。
实现您所描述的最佳方法是:
2ic8powd2#
其最近发布并可供使用:https://cloud.google.com/datastore/docs/aggregation-queries.
还有各种客户端库也支持此特定功能。