特定のIDを予約するようにDatastoreに指示することはできません。したがって、既存のデータを挿入するときに手動でIDを設定し、後でデータストアにIDを割り当てさせると、既に使用したIDが選択されます。使用している操作(INSERTやUPSERTなど)によっては、操作が失敗したり既存のエンティティを上書きしたりすることがあります。
既存のIDをデータストアIDにマップするための移行計画を策定する必要があります。あなたが持っているテーブルの数とそれらの間の関係の複雑さによっては、これは時間のかかるプロジェクトになるかもしれませんが、それでもやることができます。
簡単な例を取ると、あなたは2つのテーブルを持っていると仮定しましょう:
USER(USER_IDは主キーです) USER_DATA(USER_IDが外部キーである)
あなたはおそらく、ユーザーに別の列を追加します(または、別の可能性USER_IDをDATASTORE_IDにマップします。ここでは、使用する種類のデータストアのallocateIDメソッドを呼び出し、返されたIDを新しい列に格納します。
これで、MySQLデータのUser IDを無視して、新しいデータのIDを使用する代わりに、USERデータをCloud Datastoreに移動できます。
USER_DATAからデータを移行するには、2つのテーブル間で結合を行い、データストアIDを使用してデータをプッシュします。
また、シーケンシャルID(単調増加値と呼ばれる)を使用すると、Datastoreのパフォーマンスに問題が発生する可能性があります。したがって、データストアによって生成されたIDを使用したいと思うかもしれません。
約1000。 – danielz
申し訳ありませんダニー、私はあなたの質問を誤解しました。ジェフリーはあなたに正しい答えを得ました。 – feroult