如果您导航到 localhost:4321/_ah/admin ,您可以利用 sdk 数据存储查看器,您将在其中看到每种实体都有一个 KEY 字段和一个 NAME/ID 字段;
无论您使用 long、String 还是 Key 作为您的 @PrimaryKey,都会有一个 ID/Name 列,其中包含一个字符串/数字,以及一个 KEY 列,其中包含所述 ID 的编码键。正如在其他帖子中提到的,这种编码散列 {md5s,最有可能} 您的应用程序应用程序 ID、数据对象的完全限定类名以及您指定为 @PrimaryKey 的任何内容。
您唯一需要直接访问此字段的情况是,如果您绝对不在乎数据的名称,{当您需要程序找到它,但人类不会通过猜测单词来搜索它文本框},或者当您想要拥有多个具有相同类型和名称的对象时{也许使用版本 int?},那么您应该使用编码键语法。无论您在类中放置一个字段,KEY 和 ID 都存在于数据库中,使用编码的键语法只会让您访问该值。
此外,对于使用编码键的应用程序还有一个可用的速度奖励......只有两种类型的查询:SELECT * 和 SELECT _ _ key _ _ {用于显示有两个 _} 的空格。对于 AJAX 应用程序中的大型数据集,对数据进行分页的唯一有效方法是选择所有键,将它们发送给客户端,让客户端请求 0->X 条记录,为其他 X-> 建立链接Y 结果,并使用第一组编码键查询服务器以获得完整数据,将响应解析为漂亮的小列表,并避免加载 397 个不是立即有用的服务器数据对象。
向上和向下发送编码的密钥可能比未编码的密钥需要更多的带宽{除非你像我一样在命名事物上啰嗦!}; 但它减少了 appengine 上的 CPU 周期,让你的配额更快乐,每个人的应用程序运行速度都快一点!
这个密钥,即使以某种方式未散列,也只会暴露与您创建 PrimaryKey 一样敏感的数据。不涉及您的应用程序密码,也不会涉及任何健全的数据模型中的用户密码。如果您使用提供的 User 类进行身份验证,或者您在源代码中使用的类名,那么 {BIG 可能} 泄漏的唯一可能是用户电子邮件地址。
...基本上,只有在观看一两个萤火虫请求时已经可用的信息可能会被公开。