Java allocateIds DatastoreService实际使用情况

Java allocateIds DatastoreService实际使用情况,java,google-app-engine,google-cloud-datastore,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) allocateIds()的用法: 您希望使用整数ID在事务中写入多个相互引用的实体。在提交之前,您不会知道“自动id”(即,如果不设置键的id/名称,您会得到什么)

我可以问一下
DatastoreService

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

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

  • 您需要用户可读的面向用户的ID,例如案例编号。默认的自动ID是大数字(~16个十进制数字),但allocateIds()提供的是“旧式”顺序ID,通常更小(6或7个数字)

  • 如果要为其分配ID的实体具有祖先,请使用接受父键arg的函数。否则,请使用其他AllocateID,您只需指定种类

    至于allocateIdRange(),我建议您不要使用它。它的设计目的是允许您保留一块整数id空间来进行自己的手动分配,但这在客户端很难正确管理,而且效率低下,并且不再得到很好的支持(在“新型”大型id上它将失败)