Если «книга является дочерней подкатегорией A», и вы ее смоделировали, добавив ключ подкатегории A к ключевому пути книги, вам либо нужно удалить/воссоздать книгу, либо вам нужно создать подкаталоги B с тем же ключом, что и субкаталогия. Первоначально имел. Это повлияло бы на все другие книги, которые были дочерними субкатегориями A.
Это потому, что (со ссылкой на appengine docs: «Полный ключ назначается, когда объект создается в хранилище данных, и ни одна из его частей не может меняться».).
Оба решения для меня кажутся довольно сложными, и я предлагаю вам пересмотреть свой дизайн. Например, вы можете хранить ключ subcatagoryA как отдельное поле внутри отдельного свойства. Это также имеет побочные эффекты, которые вы могли бы частично решить путем денормализации ваших данных и хранения (части) данных subcatagoryA непосредственно в книге INSIDE.
[EDIT]
В ответ на ваш вопрос: недостаток малых групп сущностей является то, что вы не можете использовать транзакции. Является ли это проблемой, зависит от того, действительно ли вам нужны транзакции в книгах + ((под) категории. Большая проблема денормализации возникает, когда вы хотите изменить что-то из ваших денормализованных данных. Для этого вы можете придумать схема, как это:..
- магазин каждой категории как объект со свойствами следует хранить категории KEY + (некоторые) другие свойства вашей книги (ы)
- Если категория изменения, обновить все денормализованным данные из всех книг, принадлежащих к этой категории (используется хранимый «чужой» ключ для поиска этих книг)
- Используйте задание cron для проверки согласованности в фоновом режиме (то есть в случаях, когда предыдущее задание не выполняется в середине).
можете ли вы разместить занятия, пожалуйста? просто свойства каждого –