Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 对对象类型(如用户)进行全局计数是最佳做法吗?_Java_Google App Engine - Fatal编程技术网

Java 对对象类型(如用户)进行全局计数是最佳做法吗?

Java 对对象类型(如用户)进行全局计数是最佳做法吗?,java,google-app-engine,Java,Google App Engine,我知道在应用程序引擎中保留全局计数器是不受欢迎的。不过我很想得到一些数据,比如每24小时一次。例如,我想每24小时计算一次系统中用户对象的数量 那么我们如何做到这一点呢?我们是否只保留一组管理工具功能,这些功能类似于: SELECT FROM com.me.project.server.User; 看看返回的列表有多大?这有点令人沮丧,因为数据存储必须反序列化每个用户实例才能创建返回的列表,对吗 我可以通过只要求返回密钥来优化它,这样就不必反序列化整个用户对象 再说一次,为#个用户设置一个全局

我知道在应用程序引擎中保留全局计数器是不受欢迎的。不过我很想得到一些数据,比如每24小时一次。例如,我想每24小时计算一次系统中用户对象的数量

那么我们如何做到这一点呢?我们是否只保留一组管理工具功能,这些功能类似于:

SELECT FROM com.me.project.server.User;
看看返回的列表有多大?这有点令人沮丧,因为数据存储必须反序列化每个用户实例才能创建返回的列表,对吗

我可以通过只要求返回密钥来优化它,这样就不必反序列化整个用户对象

再说一次,为#个用户设置一个全局计数器可能会产生太多的争用,因为我正在创建的服务一分钟可能不会有数百个注册

我们应该怎么做呢?每天获取一次我的用户总数可能是一个非常典型的操作


谢谢你

如果你只关心每天检查一次的话,我就不会费心记下跑步记录了

User.all().count()


对于超过1000个用户的查询,您可以使用,使用光标一次查询1000以开始下一个查询,并在结果计数小于1000时停止。

您可以使用来确定也有多少用户对象。如果用户超过1000,这可能比使用游标更容易(更快)。

好吧,如果我只想进行全局计数,这似乎是最简单的方法,谢谢!太棒了,谢谢,是的,我认为dound列出的统计方法会很好地工作,但是如果我想做“纽约的用户数”之类的事情,那么我可能会使用游标方法进行特定的搜索,并在结果中翻页,直到找到最大值。谢谢