3

Если я создаю резервную копию и восстанавливаю ее с помощью хранилища данных Google backup utility, числовые идентификаторы копируются в новый хранилище данных.Как обеспечить уникальные идентификаторы в проекте Datastore, который поступает из резервной копии?

Восстановление «вручную» присваивает числовые идентификаторы, т. Е. Не использует автоматическое выделение.

Затем, если я создаю новые объекты с использованием автоматического распределения по умолчанию, кажется, что я рискую столкновениями. Как указано here:

[A] dvanced приложение может иногда требуется назначить свои собственные числовые идентификаторы вручную для лиц, которые они создают. Однако имейте в виду, что ничего не мешает Datastore назначить один из ваших числовых идентификаторов другому объекту.

Как избежать таких столкновений? Я бы предпочел не переключиться на использование name s, чтобы поддерживать совместимость с моим существующим кодом id.

ответ

2

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

Это работает через проекты из-за внутренних API, которые мы можем назвать.

+1

«Если вы вернетесь в тот же проект,« Спасибо. Но я возвращаюсь в другой проект. Даже если это само по себе не является требованием, важно проверить цикл резервного копирования и восстановления. Но из «Это работает через проекты» я понимаю, что последующее автоматическое выделение идентификатора, даже в этом другом проекте, не будет иметь никаких коллекций. –

0

Ответ на этот вопрос: идентификаторы резервных копий утилиты Google с allocateIdRange в API API приложений Google. Однако эта функциональность недоступна через API облачного хранилища данных Google.

Если вы не выделяете-id-диапазон, вы рискуете помещать Datastore в противоречивое состояние, в котором вы получаете исключение, когда вы создаете новый Entity с autoallocated ID.

Смежные вопросы