AppEngine - Когда использовать родительские отношения? - PullRequest
5 голосов
/ 08 августа 2011

Я пытаюсь понять, когда использовать сущность "родитель" в GAE. Это полезно только для запросов (т. Е. Получить все объекты Foo, где родитель == someObj) или дочерний объект имеет доступ к родительскому объекту во многом как ReferenceProperty?

Когда лучше использовать родительский объект вместо ReferenceProperty?

Ответы [ 2 ]

5 голосов
/ 08 августа 2011

Единственный раз, когда вы должны использовать группы сущностей (то есть, что у всех сущностей с общей родительской формой), это безопасность транзакций. Если вам необходимо обновить несколько записей в транзакции, все они должны иметь одну и ту же корневую сущность. Причина, по которой вы не просто поместите все свои сущности под одного родителя, заключается в том, что обновления группы сущностей ограничены примерно 1 в секунду. Для получения дополнительной информации см. этот раздел документации.

Сущность может получить доступ к своему родителю с помощью this.parent, но в этом нет ничего особенного - это просто синтаксический сахар для db.get(this.key().parent()).

1 голос
/ 08 августа 2011

Все, что я читаю, противоречит Родительским сущностям по одной причине: когда вы что-то изменяете в этом дереве, все блокируется.

Когда я впервые начал работать с родительскими объектами, я хотел относиться к ним как к головке улья или к базе данных, локализованной вокруг этой родительской записи, но, очевидно, это не так, как это делается. Возможно, вы просто захотите использовать ReferenceProperty, потому что это позволит вам получить доступ к родителю и не приведет к продолжению блокировки.

Конечно, если вы хотите такого рода блокировки отношений, то, возможно, вы действительно хотите этого, но вы не были достаточно конкретны, чтобы я мог это оценить.

...