java - allocateIds DatastoreService 实际使用情况

标签 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() 的用途:

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

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

如果您要为其分配 ids 的实体具有祖先,请使用采用父 Key 参数的函数。否则,使用其他 allocateIds,您只需指定种类。

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

关于java - allocateIds DatastoreService 实际使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190796/

相关文章:

java - "void"作为方法的返回类型意味着什么?

python-2.7 - 导入错误 : No module named cryptography. hazmat.bindings._openssl

google-app-engine - 游标是否处理最终一致性?

java - 使用 Spring 和 Spring Security 正确注入(inject) SessionFactory

java - 在 Java 2D 中创建复合形状

python - 在 Google App Engine 中,如何选择不存在属性的实体?

python - 数据存储中现有实体的复合索引写入

java - 在 AppEngine 中安全处理并发 Memcache 更新

java - 全局初始化控件在不同方法中变为空

java - 获取 java.lang.RuntimeException : Unable to complete the HTTP request while uploading document