我将实体的密钥存储为另一个实体的属性以便将它们关联起来。我们在项目的这个阶段处于重构阶段,所以我在考虑引入祖先。 这两种方法之间是否存在性能差异?如果我们介绍祖先,我可能获得的任何优势?
class Book(ndb.Model):
...
class Article(ndb.Model):
book_key = ndb.KeyProperty(kind=Book, required=True)
book_key = ndb.Key("Book", 12345)
第一个祖先查询方法
qry = Article.query(ancestor=book_key)
第二个简单的密钥查询方法
qry = Article.query(book_key=book_key)
答案 0 :(得分:15)
祖先查询将始终完全一致。另一方面,book_key
的查询不一定是一致的:您可能会发现最近的更改不会显示在该查询中。
另一方面,引入祖先会对更新次数施加限制:您每秒只能对任何实体组(即祖先及其子级)执行一次更新。
关于哪一项在您的应用中更为重要,这是一个权衡。