我在使用。
如果由IdGeneratorStrategy.Identity生成一个长密钥字段,然后从数据存储中删除该对象,那么同一类的不同对象是否有可能再次使用该密钥?
reddit上的
文件写道:
GenerationType.IDENTITY的文档表示,它意味着持久化提供者(数据库)将提供唯一的ID。因此,如果数据库软件决定从已删除的记录中重用ID,则完全由数据库软件决定。如果不了解您的问题,我会说这是可能的,但我想不出有什么好的理由让数据库服务器跟踪哪些in在使用,并回收旧的in。这似乎是很大的开销,却没有什么好处。
谷歌集团的
和Mark写到了GAE标识是如何生成的:
由于prod中的数据存储由多个后端组成,所以我们使用分片计数器方法来分发id,这样我们就不必担心不同的后端发出相同的id。因此,后端A可能从0到100的ID池工作,后端B可能从101到200的ID池工作,依此类推。如果插入到不同的数据存储后端,则会得到一些ID。您可以依赖于这些ID是唯一的,但不是单调增加的。
我现在认为,重新使用身份价值是不太可能的,但最好有一个明确的明确答案。
发布于 2011-02-21 23:47:06
App引擎永远不会为给定的类型和父类重用ID。事实上,我认为很难找到这样的数据库--保持一个简单的计数器比试图找出哪些ID还在使用要简单得多,而且使用64位时,您不会用完ID。
https://stackoverflow.com/questions/5066827
复制相似问题