我实现了查询一个表的逻辑,对于该表中的每个实体,我必须查找另一个表。你知道吗
因为,例如
我的代码看起来像
query = ndb.gql("select * from Foo where user = :1", user.key)
stories, next_cursor, more = query.fetch_page(size, start_cursor=cursor)
if next_cursor:
for story in stories:
print story.key
images = ndb.gql("select * from Images where story = :1", story.key)
for image in images:
print image.key
else:
#do some operations
你看,如果我们把fetch\u page函数的大小设为10,它会找到10个实体。对于每个实体,我们必须查找另一种Image
。你知道吗
这种类型的数据存储查找需要850到950毫秒。我想减少此API的响应时间。
注意,我必须从Story
类和Images
类中获取一些列值。你知道吗
是否仍然可以使用get_multi
方法来缩短查询。或者,我有一个使用memcache
的想法,或者我们应该在Foo
模型中定义一个新的StructuredProperty
,它的值必须是Images
模型实体的列表。你知道吗
我不知道哪一个适合这个案子。。请引导我。你知道吗
您需要了解NDB批处理异步API
此API将只调用2个查询。你知道吗
因为,
Key.get_async()
也会自动使用memcache,所以从您调用上述函数的秒数开始,2查询将调用memcache可以向每个包含图像ID列表的故事添加属性。我想这个列表很少改变。然后您可以轻松地
get_multi
与一个故事相关的所有图像,而无需任何查询。你知道吗您还可以考虑在单个调用中
get_multi
查询返回的所有故事的所有图像,然后在必要时将它们“附加”到代码中相应的故事中。你知道吗我不知道你项目的整体结构,但是。。。你知道吗
你可以这样做:
并且每次用户添加新图像时都会更新它(
images
的Story
属性)。你知道吗然后您就可以使用:
希望有帮助。你知道吗
相关问题 更多 >
编程相关推荐