2

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

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

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

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

排名,姓名,销售额 23,Alea Goodmanson,1,875 美元 37,Tom Jones,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 个完整对象发出附加查询?我还必须查询表中特定人员的完整对象。

谢谢!

4

1 回答 1

2

您想检索排序列表中的得分最高的人...幸运的是,已经有人构建了它。

Java 实现

Python 实现

于 2013-08-21T17:11:53.597 回答