3

Google Datastore backup utilityでバックアップして復元すると、数値IDが新しいデータストアにコピーされます。バックアップから取得したデータストアプロジェクトでユニークIDを保証するにはどうすればよいですか?

復元は「手動で」数値IDを割り当てます。つまり、自動割り当てを使用していません。

次に、デフォルトのID自動割り当てを使用して新しいエンティティを作成すると、衝突の危険があるようです。 here述べたように:[A]

がdvancedアプリケーションは、時には彼らが作成したエンティティに手動で自分の数値 IDを割り当てたいことがあります。ただし、 は、Datastoreが 手動数値IDのいずれかを別のエンティティに割り当てるのを防ぐものではありません。

このような衝突を回避するにはどうすればよいですか?私はむしろnameを使用して、私の既存のidベースのコードとの互換性を維持するように切り替えるつもりはありません。

答えて

2

同じプロジェクトに復元する場合は、「新しい」IDを手動で割り当てるのではなく、既存のIDを再割り当てするだけです。この場合、自動割り当てに関する問題は発生しません。関連するメモとして、エンティティグループごとに自動割り当てされたIDを追跡するので、あるグループの子エンティティを別のグループにコピーすることはできません。

これは私たちが呼び出せる内部APIのためにプロジェクト全体で機能します。

+1

"同じプロジェクトに復元すると、"ありがとうございます。しかし、私は別のプロジェクトに復帰しています。それ自体が要件ではないとしても、バックアップ/復元サイクルをテストすることは不可欠です。しかし、「これはプロジェクト間で動作します」ということから、この別のプロジェクトであっても、その後のIDの自動割り当てにはコレクションが含まれないことを理解します。 –

0

Googleのバックアップユーティリティでは、Google App Engine APIにallocateIdRangeのIDが予約されています。ただし、この機能はで、Google Cloud Datastore APIを使用してには利用できません。

allocate-id-rangeを指定しないと、自動割り当てIDを使用して新しいエンティティを作成するときにDatastoreが矛盾した状態になる危険性があります。

関連する問題