【问题标题】:allocateIds DatastoreService real-world usageallocateIds DatastoreService 实际使用情况
【发布时间】:2014-04-21 04:25:19
【问题描述】:

我可以询问DatastoreService 的一些实际用法

 - allocateIdRange(KeyRange range)
 - allocateIds(Key parent, java.lang.String kind, long num)
 - allocateIds(java.lang.String kind, long num)

【问题讨论】:

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


    【解决方案1】:

    allocateIds() 的使用:

    1. 您希望使用整数 ID 在事务中编写多个相互引用的实体。在您提交之前,您不会知道“自动 ID”(即,如果您未设置密钥的 ID/名称,您会得到什么),因此您无法使实体“相互指向”(例如,使用参考属性)作为 txn 的一部分。但是如果你先分配一些id,你可以手动将key id设置为你分配的那些,然后在事务中写入相互引用的实体,并且没有与其他auto id冲突的风险。

    2. 您希望面向用户的 id 是人类可读的,例如对于案例编号。默认的自动 ID 是大数字(约 16 位十进制数字),但 allocateIds() 为您提供“旧式”顺序 ID,通常会小得多(6 或 7 位数字)。

    如果您希望为其分配 id 的实体有祖先,请使用接受父 Key arg 的函数。否则,请使用您刚刚指定种类的其他 allocateIds。

    至于 allocateIdRange(),我建议你不要使用它。它旨在让您保留一块整数 id 空间来进行自己的手动分配,但这很难在客户端正确管理且效率低下,并且不再得到很好的支持(它会在“新式”大id)。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多