Подтвердить что ты не робот

Google Appengine NDB предка против ключевого запроса

Я храню ключ объекта как собственность другого, чтобы связать их. На данный момент мы находимся на стадии рефакторинга в проекте, поэтому я думал о представлении предков. Есть ли разница в производительности между двумя подходами? Какие-нибудь преимущества, которые я мог бы получить, если бы мы представили предков?

class Book(ndb.Model):
  ...

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


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

1-й подход предка

qry = Article.query(ancestor=book_key)

2-й простой подход ключевого запроса

qry = Article.query(book_key=book_key)
4b9b3361

Ответ 1

Запрос предка всегда будет полностью согласованным. С другой стороны, запрос с запросом book_key не обязательно будет последовательным: вы можете обнаружить, что последние изменения не будут отображаться в этом запросе.

С другой стороны, введение предка накладывает ограничение на количество обновлений: вы можете делать только одно обновление в секунду любой группе сущностей (т.е. предку и его дочерним элементам).

Это компромисс для вас, который более важен в вашем приложении.