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)
Ответы
Ответ 1
Запрос предка всегда будет полностью согласованным. С другой стороны, запрос с запросом book_key
не обязательно будет последовательным: вы можете обнаружить, что последние изменения не будут отображаться в этом запросе.
С другой стороны, введение предка накладывает ограничение на количество обновлений: вы можете делать только одно обновление в секунду любой группе сущностей (т.е. предку и его дочерним элементам).
Это компромисс для вас, который более важен в вашем приложении.