allocateIds DatastoreService实际使用情况

时间:2014-04-21 04:25:20

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

我可以要求DatastoreService

的一些真实用法
 - allocateIdRange(KeyRange range)
 - allocateIds(Key parent, java.lang.String kind, long num)
 - allocateIds(java.lang.String kind, long num)

1 个答案:

答案 0 :(得分:2)

allocateIds()的使用:

  1. 您希望使用整数ID在事务中编写多个相互引用的实体。你不会知道" auto id" (即,如果你保留密钥的id /名称,你得到的是什么)直到你提交之后,所以你不能让实体相互指向" (例如,使用引用属性)作为txn的一部分。但是,如果首先分配一些ID,则可以手动将密钥ID设置为您分配的ID,然后在事务中编写相互引用的实体,而不存在与其他自动ID冲突的风险。

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

  3. 如果您要为其分配ID的实体具有祖先,请使用带有父键arg的函数。否则,使用其他allocateIds来指定类型。

    至于allocateIdRange(),我建议你不要使用它。它被设计为允许您保留整数id空间的块来进行自己的手动分配,但是在客户端正确管理这是困难且低效的,并且也不再受到良好支持(它将在&上失败) #34;新式"大ids)。