Google Cloud Datastore 自动生成的唯一 ID

Google Cloud Datastore unique autogenerated ids

我正在使用 Google Cloud Datastore 并使用命名空间对数据进行分区。某些类型通过创建键来使用 Cloud Datastore 中自动生成的 ID,如下所示:

var key = Datastore.key([
    'example'
]);

此代码将生成一个类型为 'example' 的键,Cloud Datastore 会自动为该实体分配一个整数 ID。 (来源:https://cloud.google.com/datastore/docs/concepts/entities#kinds_and_identifiers

但是这个 "unique" ID 仅对于其命名空间是唯一的。我在不同的命名空间中看到了相同的 ID。

所以我的问题是,是否可以告诉 Cloud Datastore 自动生成的 ID 对于所有命名空间都必须是唯一的?

也许这个问题没有意义,但我更希望在所有数据存储中都有唯一的 ID(如果可能的话)。

我在 Cloud Datastore documentation 中看到了 "allocateIds" 函数,但我想知道这个函数是否处理名称空间,因为我看到我可以将它们包含在请求中并且恐怕这些 ID 与 Cloud Datastore 自动生成的 ID 相同。

提前致谢!

否:您不能告诉 Datastore 在所有实体组和命名空间之间分配唯一 ID。

然而,有一个简单的解决方法:如果您相信统计数据并正确设置随机数生成器的种子,那么如果您生成自己的 GUIDs 密钥,通常情况会更好。

如果您不相信统计数据和随机数,您仍然可以生成一个 GUID 并在写入相关实体之前以事务方式验证它不存在于您的数据存储中。

如果您真的迫切希望 Datastore 为您分配 ID,可以手动调用 AllocateIds 并要求它为常量键分配 ID。 (例如,要求它在默认命名空间中分配一个任意(但不变)的键,它会 return 你一个整数,这个整数在其他地方使用时是唯一的)。