Google Appengine NDB祖先vs关键查询

时间:2013-06-19 12:41:11

标签: python google-app-engine app-engine-ndb

我将实体的密钥存储为另一个实体的属性以便将它们关联起来。我们在项目的这个阶段处于重构阶段,所以我在考虑引入祖先。 这两种方法之间是否存在性能差异?如果我们介绍祖先,我可能获得的任何优势?

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)

1 个答案:

答案 0 :(得分:15)

祖先查询将始终完全一致。另一方面,book_key的查询不一定是一致的:您可能会发现最近的更改不会显示在该查询中。

另一方面,引入祖先会对更新次数施加限制:您每秒只能对任何实体组(即祖先及其子级)执行一次更新。

关于哪一项在您的应用中更为重要,这是一个权衡。