【问题标题】:Does AppEngine HR Datastore auto assign negative IDs?AppEngine HR Datastore 是否会自动分配负 ID?
【发布时间】:2012-08-09 20:22:30
【问题描述】:

我将 AppEngine 与 HR 数据存储区一起使用,并且我的对象的 ID 类型为 Long(使用 Java)。我自己没有设置 ID,而是让 Datastore 选择一个新的唯一 ID。到目前为止,我只看到生成了肯定的 ID。

AppEngine 是否也曾经分配过负 ID? (当然,假设我请求的 ID 不超过 2^63 个 ;-))

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    allocate_id_range(预分配 id 的 Python 方法)如果传递负值将引发异常。所以我猜否定的 id 键不是有效的。

    【讨论】:

    • 我能够使用 Java 存储带有负 ID 的对象,因此 AppEngine 数据存储区本身确实支持负 ID。不过,它们是否生成它们的问题尚未得到解答。
    【解决方案2】:

    答案似乎是:可能。

    在我的测试中,我只看到了积极的自动生成的 ID,但我能够存储消极的 ID(如果手动分配)。直到有人可以向我们指出以其他方式定义的规范或至少来自 AppEngine 团队的某些 Google 员工发声之前,我们必须假设他们至少保留随时生成负 ID 的权利。因此,我们的代码不能假定生成的 ID 始终为正。

    【讨论】:

      【解决方案3】:

      没有。只会生成肯定的 ID。

      【讨论】:

      • 我同意丹尼尔的观点,如果我们要在我们的代码中假设这一点,我们需要看到一个为我们说明它的规范,这样我们就知道我们将来不会感到惊讶。
      【解决方案4】:

      在 GAE 数据存储对象中生成两个唯一值, 一个是KEY,它是在您创建模型对象的实例时生成的,并且在保存(放置)操作后,它会生成ID(总是一个正数),是的,当然两者在整个数据存储中都是独一无二的。

      【讨论】:

      • 你说:“总是一个正数”。你怎么知道?这有保证吗?如果是这样,您能否参考文档/规范?
      猜你喜欢
      • 2011-09-21
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多