Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Google app engine 在Google数据存储中使用QuerySpliter加载已知大小的块_Google App Engine_Google Cloud Datastore_Cursors - Fatal编程技术网

Google app engine 在Google数据存储中使用QuerySpliter加载已知大小的块

Google app engine 在Google数据存储中使用QuerySpliter加载已知大小的块,google-app-engine,google-cloud-datastore,cursors,Google App Engine,Google Cloud Datastore,Cursors,我想从Google数据存储表加载大量数据。为了提高性能,我想并行运行几个查询,每个查询都会加载很多对象。游标不适合并行执行 是。但是,对于QuerySpliter,您必须告诉它您需要多少个拆分,我关心的是加载一定数量的对象。这个数字是根据我的应用程序的需要选择的,很大,但不能太大,比如说800个对象。如果每个查询返回的对象数量只是大致相同,那也没关系;如果不同的线程运行不同的时间,则不会发生更糟糕的情况 我该怎么做?我可以查询所有对象的键,只是为了对它们进行计数,然后除以800。有更好的方法吗。

我想从Google数据存储表加载大量数据。为了提高性能,我想并行运行几个查询,每个查询都会加载很多对象。游标不适合并行执行

是。但是,对于QuerySpliter,您必须告诉它您需要多少个拆分,我关心的是加载一定数量的对象。这个数字是根据我的应用程序的需要选择的,很大,但不能太大,比如说800个对象。如果每个查询返回的对象数量只是大致相同,那也没关系;如果不同的线程运行不同的时间,则不会发生更糟糕的情况


我该怎么做?我可以查询所有对象的键,只是为了对它们进行计数,然后除以800。有更好的方法吗。

查询所有实体(甚至只查询键)可能无法很好地扩展,但您可以定期运行查询并将计数保存在数据存储或memcache中,具体取决于您需要运行作业的频率

但是,要查找给定类型的所有实体,可以使用,这应该要快得多。我不知道统计数据更新的频率,但它可能与控制台中的统计数据相同


如果您要使用更频繁的计数,或筛选查询的数字,则可以考虑使用锐利计数器。因为您只需要一个大概的数字,所以可以在每次新的put时异步更新它们。

而不是查询(甚至只查询键)一类的所有实体,您可以使用来获取
\uu Stat\u kind\uuuuuu
谢谢!我不知道这一点,这可能就是我加载整个表所要做的。但是,我们希望能够基于过滤器在表中加载部分数据,尽管仍然需要大量数据。我已据此对问题进行了编辑。如果你想把你的意见写进回答中,我可以投赞成票和/或接受。供将来参考:这里记录了切分计数器,这里讨论了计数操作