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

Using QuerySplitter in Google Datastore to load chunks of a known size

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

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

我该怎么做?我可以查询所有对象键-仅为了计算它们,然后除以 800。有没有更好的方法。

查询所有实体(甚至仅键)可能无法很好地扩展,但您可以 运行 您的 query/ies 定期将计数保存在数据存储或内存缓存中,具体取决于您需要的频率运行 你的工作。

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

如果您要进行更频繁的计数或筛选查询的数字,您可以考虑分片计数器。由于您只需要一个大概的数字,因此您可以在每次新放置时异步更新它们。