【问题标题】:Google App Engine Large Query to Display Rankings谷歌应用引擎大查询显示排名
【发布时间】:2013-08-21 16:53:58
【问题描述】:

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

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

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

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

排名、名称、销售额 23、阿丽亚·古德曼森,1,875 美元 37,汤姆琼斯,1550美元 77,茉莉花约翰逊,1,325美元 283,克里斯·莫尔斯,1100 美元 643,南希·克利珀,650 美元

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    Java implementation

    Python implementation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多