无法查询App Engine数据存储区以获得汇总结果。
实施例: 我有一个名为“Post”的实体,其中包含以下字段:
Key id,String nickname,String postText,int score
我的数据存储区中每个昵称都有许多不同的昵称和许多帖子。
如果我想要一个总分十大昵称的排行榜,我通常会有如下的SQL:
select nickname, sum(score) as sumscore
from Post
group by nickname
order by sumscore
limit 10
在谷歌应用引擎数据存储区java api(jdo或jpa)中无法进行此类查询。
我可以使用哪些替代策略来获得类似的结果?
粗暴地,我可以加载每个Post实体并在我的应用程序代码中完全计算聚合。这对大型数据集来说显然效率不高。
我可以采用哪些其他策略?
答案 0 :(得分:10)
创建Nickname
模型,每次添加新帖子时,检索相应的昵称并在那里增加存储的分数总和。基本上,在插入/更新时进行计算,而不是查询时。