Запись в хранилище данных google-app-engine той же сущности с одинаковыми перезаписываемыми ключами - ожидается? - PullRequest
2 голосов
/ 12 января 2010

У меня есть объект хранилища данных, который использует одно из полей в классе для создания ключа. Предположим, у меня есть объект 'a' со значением 'k' для этого поля. Если я пытаюсь добавить объект «b» в хранилище данных, которое также имеет значение «k» для поля, объект «b» перезаписывает объект «a». Просто хотел подтвердить, если это ожидаемое поведение. Хотя это выглядит совершенно очевидно, было бы здорово, если бы кто-то смог объяснить основную концепцию ..

Ответы [ 3 ]

7 голосов
/ 12 января 2010

Как объяснил Адам, короткий ответ заключается в том, что две сущности не могут использовать один и тот же ключ (представьте себе диктат).Длинный ответ, хотя, немного сложнее.См. документы :

Пути и уникальность ключа

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

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

Приложение не должно полагаться на числовые идентификаторы, назначаемые в порядке возрастания с порядком объектасоздание.Обычно это так, но не гарантируется.

3 голосов
/ 13 января 2010

Да. Хранилище данных App Engine не различает «вставку» и «обновление» - обе операции «положить».

1 голос
/ 12 января 2010

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

...