すべてのエンティティは識別子を持っています。アプリケーションは、インスタンス コンストラクタに key_name 引数(str 値)を指定して、キーに使用するためにアプリケーション自身の識別子を割り当てることができます。
s = Story(key_name="xzy123")
key_name は Unicode 文字列(str 値が ASCII テキストに変換されたもの)として格納されます。key_name は先頭に数字を持つことができません。また、*(2 つのアンダースコアで始まり、終了する)の形式を取ることもできません。ユーザーのアプリケーションは、ユーザーが送信したデータをデータストア エンティティ キー名(メール アドレスなど)として使用するには、既知の文字列を前に付けるなどの方法で、その値を最初にサニタイズして、上記の要件を満たす必要があります。
key_name が指定されていない場合、エンティティが初めてデータストアに格納されるときに数値 ID が割り当てられます。
パス、種類、名前や数値 ID を含んだエンティティの完全なキーは、一意であり、エンティティに固有のものです。完全なキーはエンティティがデータストアに作成されたときに割り当てられ、どの部分も変更することができません。
個別の 2 つのエンティティのキーは、少なくとも一部が異なりさえすれば、類似した部分があっても構いません。たとえば、親が違っていれば、2 つのエンティティが同じ種類と名前を持つことができます。同様に、2 つのエンティティが同じ名前と親を持っていても(または親なしでも)、種類が異なっていれば構いません。
アプリケーションは、エンティティを作成した順番に数字を増やして割り当てる数値 ID に依存しないようにしてください。この方法は一般的ですが、保証はされません。