一旦上传到云数据库,确保唯一标识保持唯一的惯例是什么?

时间:2019-11-11 16:53:09

标签: sql database sqlite android-room uuid

说2个用户在其本地设备上都有一个条目,但是有一次机会,他们的条目生成了相同的uuid。当两个用户都尝试将它们上传到中央数据库时会发生什么情况

仅“重新编号”其中一项是正常的吗?

2 个答案:

答案 0 :(得分:1)

两个设备生成重复UUID的机会非常小,以至于大多数系统都会忽略这种可能性。来自How unique is UUID?

  

在接下来的100年中,每秒产生10亿个UUID,   仅创建一个副本的可能性约为50%。

当然,这取决于设备生成的数据量,如果这些传感器是生成大量记录(例如,在飞机发动机上)的某些类型的传感器,那么非唯一UUID的可能性就开始变得很大。可能性。

如果是这种情况,并且您需要确保ID中的唯一性为100%,那么就像其他人提到的那样,您需要执行以下操作之一:

  • 为每个设备分配一个(较大的)唯一范围来生成ID
  • 在集中合并数据时重新生成所有ID
  • 对照现有ID检查所有传入ID,并修改所有重复项以使其唯一(这可能是非常昂贵的操作)

答案 1 :(得分:0)

似乎您要让多个设备生成对于整个应用程序应该唯一的ID。

如果您可以检查条目上载冲突,并阻止使用现有唯一ID上载条目,则可以通过生成另一个ID并重试来处理错误。 (这可能是可行的,特别是如果您可以通过上传这些条目的用户而不是唯一ID来区分条目。)如果这是您的选择,那么使用随机数(例如随机UUID)就足够了)作为唯一条目ID。如果您可以忍受为不同条目生成相同标识符的风险,那么随机ID也很合适。

另请参阅我对unique random identifiers的看法。