我知道在app引擎中保持全局计数器不受欢迎。我有兴趣获得一些统计数据,比如每24小时一次。例如,我想每24小时计算一次系统中的User对象数。
那我们该怎么做呢?我们只是保留一组管理工具函数,它们可以执行以下操作:
SELECT FROM com.me.project.server.User;
然后看看返回List的大小是多少?这有点无聊,因为数据存储区必须反序列化每个用户实例以创建返回的列表,对吗?
我可以通过仅要求返回键来优化它,因此不必反序列化整个User对象。
然后,用户数量的全局计数器可能会产生太多争用,因为我正在创建的服务每分钟可能不会有数百次注册。
我们应该怎么做呢?每天获得一次用户总数可能是一个非常典型的操作吗?
谢谢
答案 0 :(得分:3)
您可以使用datastore statistics API来确定有多少用户对象。如果您有超过1,000个用户,这可能比使用游标更容易(也更快)。
答案 1 :(得分:0)
如果你只关心每天检查一次,我就不会费心保持运行计数。
User.all().count()
将有效,直到您达到1000个用户(count()
仅限于1000个实体)
对于超过1000个用户的查询,您可以使用cursor,使用游标一次查询1000以启动您中断的下一个查询,并在结果计数小于1000时停止