Google Appengine NDB ancestor vs key query

断了今生、忘了曾经 提交于 2019-11-30 15:08:28

问题


I am storing a key of an entity as a property of another in order to relate them. We are in a refactor stage at this point in the project so I was thinking about introducing ancestors. Is there a performance difference between the two approaches? Any given advantages that I might gain if we introduce ancestors?

class Book(ndb.Model):
  ...

class Article(ndb.Model):
  book_key = ndb.KeyProperty(kind=Book, required=True)


book_key =  ndb.Key("Book", 12345)

1st ancestor query approach

qry = Article.query(ancestor=book_key)

2st simple key query approach

qry = Article.query(book_key=book_key)

回答1:


The ancestor query will always be fully consistent. Querying by book_key, on the other hand, will not necessarily be consistent: you may find that recent changes will not be shown in that query.

On the other hand, introducing an ancestor imposes a limit on the number of updates: you can only do one update per second to any entity group (ie the ancestor and its children).

It's a trade-off for you as to which one is more important in your app.



来源:https://stackoverflow.com/questions/17191471/google-appengine-ndb-ancestor-vs-key-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!