10

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

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)
4

1 回答 1

15

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

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

对于您的应用程序中哪个更重要,这是一种权衡。

于 2013-06-19T13:11:04.383 回答