【问题标题】:Will Datastore fetch Reference'd Entity if already fetched?如果已获取,Datastore 是否会获取引用的实体?
【发布时间】:2014-01-18 13:13:21
【问题描述】:
class Author (db.Model)
   name = db.StringProperty()

class Book (db.Model)
   author = db.ReferenceProperty (collection_name="books", indexed=True)
   name = db.StringProperty()

author = Author.get (author_key)
q = Book.all()
q.filter ("author =", author.key())
q.filter ("name =", "BOOK_NAME")
book = q.fetch(1)[0]

book.author.name

最后一条语句 (book.author.name) 会导致对数据存储的另一次读取吗?

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    是的

    如果您刚刚开始考虑使用 ndb,它内置了对 get 请求的缓存。

    【讨论】:

    • 即使它是从 ndb 缓存提供的,仍然会考虑一个额外的查询。
    • 是的,这种访问模式是正确的。 ndb 只缓存 get 而不是查询。
    • 我并不是说 ndb 会解决特定问题,但它确实通过内置缓存引入了一些效率。
    • 上次听取了您的建议 (stackoverflow.com/questions/15588836/…) 并继续使用 ndb。与 db 相比,性能提升很多。
    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 2018-09-27
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多