Google app engine 在单个请求中获取大量实体

Google app engine 在单个请求中获取大量实体,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,如果我想获得50000个实体的属性(无过滤),并将它们全部显示在一个页面上,那么最有效的方法是什么 我应该一次提取1000个片段,还是使用查询迭代器 实体本身很小,有一个或两个小于50字节的StringProperty(未索引,因为不需要过滤) 备注:我想一次显示所有50k(即不需要“下一个”链接)如果您定期加载50k个实体,最好将它们连接在一起并保存到BlobStore,以便您可以轻松地一次获取(或提供)所有实体。我认为将它们存储到数据库没有任何意义,特别是因为您没有进行任何筛选或排序。50k

如果我想获得50000个实体的属性(无过滤),并将它们全部显示在一个页面上,那么最有效的方法是什么

我应该一次提取1000个片段,还是使用查询迭代器

实体本身很小,有一个或两个小于50字节的StringProperty(未索引,因为不需要过滤)


备注:我想一次显示所有50k(即不需要“下一个”链接)

如果您定期加载50k个实体,最好将它们连接在一起并保存到
BlobStore
,以便您可以轻松地一次获取(或提供)所有实体。我认为将它们存储到数据库没有任何意义,特别是因为您没有进行任何筛选或排序。

50k将花费很长时间(可能超过30秒),并且成本高达3.5美分(将其与大量此类请求相乘)。您应该认真反思您的体系结构。@PeterKnego我正在使用NDB,所以不应该解决成本问题(自动缓存)?另外,客户端渲染和数据存储获取哪一项花费的时间最多?1。查询不会被缓存。2.要查询50k个实体,您需要进行大约50次查询,这需要时间。我建议你试试。是的,我想我得试试。顺便说一句,如果你说需要50个查询的话,那么每个查询1k个实体的限制已经取消了:数据存储永远不会一次性返回所有结果。迭代器在幕后进行延迟加载,因此它肯定会进行一系列网络往返。还有这个(Guido,第二个答案,是ODNDB的作者):你知道我实际上从一开始就考虑过这样做。我想我最终还是会走这条路的,但你帮我整理了思路,这让我获得了荣誉