Google App Engine大量查询以显示排名

时间:2013-08-21 16:53:58

标签: google-app-engine google-cloud-datastore

我正在寻找有关如何最好地完成以下任务的想法:

我有10,000个实体(Java对象)存储在Google App Engine的数据存储区中。 实体有许多字段,其中一个是“销售”,代表一个人的销售金额。

我正在构建一个显示两个销售排名表的网页,按销售额排名。我正在为这个站点使用Java对象,Java Servlet和JSP。

第一个表格将显示人员列表及其销售排名。人员列表将是人员登录到站点的人员团队中的一组特定人员。例如,商店经理Julie登录该网站,并有五名销售人员。她将看到一张桌子,其中显示了她的五位员工以及他们在数据存储区中所有人的销售排名。例如:

排名,名称,销售额 23,Alea Goodmanson,1,875美元 37,汤姆琼斯,1,550美元 77,Jasmine Johnson,1,325美元 283,Chris Mowles,1,100美元 643,Nancy Klipper,$ 650

该页面还将显示第二个表格,其中显示下表中每个人排名1-250。我将为观众提供链接,以便在完整的结果列表之间前后移动,一次250条记录。例如,“Previous 250”和“Next 250”链接将可用。我也会有链接跳转到特定范围的记录,如“1,250-1,500”或“1,750-2,000”,一直到列表中的最大值。

我需要在网页上显示的不仅仅是“销售”数据点。我还将从检索到的对象中显示十几个其他字段。所以我需要从数据存储区返回的完整对象。

数据存储区每晚都会使用新数据进行更新,但不会在人们查看该页面的当天更新。

在顶部表格中确定特定员工排名的最有效方法是什么?

为了确定任何人的排名,我需要查询按销售额排序的所有记录,并找到特定人员按此顺序排列的位置。

我应该执行哪些查询?我应该考虑放入缓存中?我想避免在每次需要确定一部分人的排名时查询所有记录。

我是否应查询按销售额排序的所有人员ID,然后循环搜索结果,如果其中一个人员ID匹配,则将循环索引保存为该人员的排名?然后为前250个完整对象发出附加查询?我还必须查询顶部表格中特定人员的完整对象。

谢谢!

1 个答案:

答案 0 :(得分:2)

你想要检索排序列表最佳得分者......幸运的是有人已经建立了它。

Java implementation

Python implementation