在谷歌应用引擎数据存储区中查询聚合("分组依据")的替代策略

Pat*_*ick 6 java sql google-app-engine jdo google-cloud-datastore

无法查询App Engine数据存储区以获得聚合结果.

示例:我有一个名为"Post"的实体,其中包含以下字段:

密钥ID,字符串昵称,字符串postText,int得分

我的数据存储区中每个昵称都有许多不同的昵称和许多帖子.

如果我想要一个总分十大昵称的排行榜,我通常会有如下的sql:

select nickname, sum(score) as sumscore
from Post 
group by nickname 
order by sumscore 
limit 10
Run Code Online (Sandbox Code Playgroud)

在Google App引擎数据存储区java api(jdo或jpa)中无法进行此类查询.

我可以用什么替代策略来获得类似的结果?

粗暴地,我可以加载每个Post实体并在我的应用程序代码中完全计算聚合.这在大型数据集上显然效率不高.

我可以采用哪些其他策略?

Amb*_*ber 10

创建Nickname模型,每次添加新帖子时,检索相应的昵称并在那里增加存储的分数总和.本质上,在插入/更新时进行计算,而不是查询时.