localhost:4321/_ah/adminに移動すると、すべての種類のエンティティにKEYフィールドとNAME/IDフィールドがあることがわかるsdkデータストアビューアを利用できます。
@PrimaryKeyとしてlong、StringまたはKeyを使用する場合、そのIDのエンコードされたキーを持つString/numberとKEY列を持つID/Name列があります。他の記事で述べたように、このエンコーディングは、{md5s、おそらく} appspotアプリケーションID、データオブジェクトの完全修飾クラス名、@PrimaryKeyとして指定したものをハッシュします。
このフィールドに直接アクセスする唯一の時間は、データの名前が何であるか気にしない場合です。{あなたのプログラムでそれを見つける必要があるが、人間はあなたが同じタイプと名前(多分バージョンintを使用していますか?)を持つ複数のオブジェクトを持っていたいなら、エンコードされたキー構文を使うべきです。あなたのクラスにフィールドを置くかどうかにかかわらず、KEYとIDの両方がデータベースに存在します。エンコードされたキー構文を使用すると、この値にアクセスできます。
また、エンコードされたキーを使用するアプリケーションにはスピードボーナスがあります。SELECT *とSELECT _ _ _ _ _ {2つの_があることを示すために使用されるスペース}の2種類しかありません。 AJAXアプリケーションの大きなデータセットの場合、データをページ設定する唯一の効率的な方法は、すべてのキーを選択してクライアントに送信し、クライアントに0 - > X個のレコードを要求させ、他のX-> Yの結果を取得し、完全なデータの場合はエンコードされたキーの最初のセットでサーバーに照会し、小さなリストに応答を解析し、直ちに有用でないサーバーデータオブジェクトを読み込まないようにします。
コード化されたキーをワイヤーで上下に送信すると、エンコードされていないキーよりも少し帯域幅が大きくなる可能性があります。 appengineでこれらのCPUサイクルを削って、クォータをより幸せにしてくれます。また、みんなのアプリはちょっとだけ速く走っています!
このキーは、何らかの形でハッシュされていなくても、プライマリキーを作成するものと同じように機密情報として公開されます。あなたはアプリのパスワードが関与していないし、まったくまれなデータモデルのユーザーパスワードもありません。あなたが提供するUserクラスを認証に使用する場合、またはあなたのソースで使用するクラス名を使用する場合、{BIGが漏れるかもしれない}唯一のことは、ユーザーの電子メールアドレスです。
...基本的には、すでに1つまたは2つのファイルを見るのに利用できる情報だけが公開される可能性があります。
同じ質問にリンクするのに気をつけますが、Pythonでは気にしませんか? – dfrankow