如何使用Java在app引擎数据存储中找到具有最大重复数的值?

时间:2014-12-02 06:04:45

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

我有一个数据存储区,用于存储客户的出租车预订详细信息。在管理控制台中,我需要向管理员显示统计信息,例如最繁忙的位置,高峰时段,特定日期特定位置的总预订。对于最繁忙的位置,我需要检索预订大多数出租车的位置。我应该遍历整个数据存储并保持计数,还是有任何方法可以知道哪个位置具有最大和最小重复项。

我正在使用对java servlet的ajax调用,它应该返回最繁忙的位置。

我还需要一个维护此类统计信息页面的建议。我应该为计数器和统计数据保留一个单独的实体类型,并在每次客户预订出租车时更新它,或者是在迭代统计页面的整个数据存储区的逻辑是否正确。提前谢谢。

1 个答案:

答案 0 :(得分:1)

关于您的数据模型和使用模式有太多未知数以提供特定解决方案,但我可以提供一些提示。

  1. 每次创建新记录时更新计数器都会使您的写入成本增加2次写入操作,这可能会也可能不会很重要。

  2. 使用仅键查询非常便宜且快速。它是计算某些内容的首选方法,因此您应该尝试以只有键的查询可以给出答案的方式对数据建模。例如,如果“trip”实体具有“起始点的id”属性,并且此属性已编制​​索引,则可以使用仅键查询循环遍历您的位置,以计算从每个位置开始的行程数

  3. 假设您记录了大量的行程,并且不经常访问/刷新管理页面,那么仅使用密钥查询方法就是可行的方法。如果每小时多次访问/刷新管理页面,您可能最好使用计数器。