Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java在app engine数据存储中找到最大重复数的值?_Java_Google App Engine_Servlets_Google Cloud Datastore - Fatal编程技术网

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

如何使用Java在app engine数据存储中找到最大重复数的值?,java,google-app-engine,servlets,google-cloud-datastore,Java,Google App Engine,Servlets,Google Cloud Datastore,我有一个存储客户出租车预订详细信息的数据存储。在管理控制台中,我需要向管理员显示统计数据,如最繁忙的地点、高峰时间、特定地点在特定日期的总预订量。对于最繁忙的位置,我需要检索预订出租车最多的位置。我是否应该遍历整个数据存储并保持计数,或者是否有任何方法可以知道哪个位置具有最大和最小的重复项 我正在使用对JavaServlet的ajax调用,它应该返回最繁忙的位置 我还需要一个维护这样一个统计页面的建议。我是否应该为计数器和统计数据保留一个单独的实体类型,并在每次客户预订cab时更新它,或者在统计

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

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


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

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

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

  • 使用仅密钥查询是非常便宜和快速的。这是计算数据的首选方法,因此您应该尝试以这样一种方式对数据进行建模,即仅限键查询可以为您提供答案。例如,如果“行程”实体具有“起点id”的属性,并且该属性已编制索引,则可以使用仅关键点查询在位置之间循环,以计算从每个位置开始的行程数


  • 假设您记录了大量的行程,并且管理员页面的访问/刷新频率不高,那么只使用键查询的方法就是最好的选择。如果管理员页面每小时被访问/刷新很多次,你最好使用计数器。

    我不确定这是否是你想要的,但是类有一个方法,谢谢你的回复。My BookingDetails实体种类有BookingID(主键)、cabType、customerID、预订日期、pickupDate、pickupLocation、dropLocation、pickupTime和contactDetails。现在我只是获取所有实体并显示统计数据。就像检索特定客户的预订历史一样,我使用查询和筛选,对于totalBooking today,我将今天的日期与pickupDate进行比较,以显示今天的预订统计信息。那么,获取整个数据存储并遍历每个实体是否好呢?这完全取决于您拥有多少实体、创建新实体的频率以及您需要统计数据的频率。这里没有写的或错误的答案——只有基于特定用例的优化。如果您没有太多的实体,请从最直接的解决方案开始,然后在必要时从那里进行优化。