Ответ 1
Когда вы выполняете запросы, вы можете использовать ancestor(), чтобы ограничить запрос дочерними элементами определенного объекта - в вашем примере, вы можете искать только потомков B
, которые вы не могли бы сделать, если бы они были на верхнем уровне.
Более подробно о запросах предков в Программирование Google App Engine
Группы ключей и сущностей doc также говорит, что:
Связи группы объектов сообщают App Engine хранить несколько объектов в одной и той же части распределенной сети... Все объекты в группе хранятся в то же хранилище данных node
edit: в том же документе также перечислены некоторые причины, по которым вы не хотите, чтобы ваши группы лиц становились слишком большими:
Чем больше сущностей группирует ваши приложение - то есть, чем больше root сущности, тем больше эффективно хранилище данных может распределять группы сущностей через узлы хранилища данных. Лучшее распространение улучшает производительность создания и обновление данных. Кроме того, несколько пользователи, пытающиеся обновить объекты в одна и та же группа лиц одновременно приведет к тому, что некоторые пользователи транзакций, возможно, не вносить изменения. Не ставьте все заявлений субъектов один корень.
Любая транзакция на объекте в Группе приведет к сбою любой другой записи в ту же группу лиц. Если у вас большая группа лиц с большим количеством записей, это вызывает много конфликтов, и ваше приложение затем должно обрабатывать ожидаемые неудачи записи. Предотвращение конкуренции с хранилищем данных более подробно описывает стратегии, которые можно использовать для минимизации конкуренции.