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

What is the convention for ensuring unique ID's remain unique, once uploading to a cloud database

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

只有"re-id"其中一个条目正常吗?

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

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

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

两个设备产生重复UUID的可能性很小,大多数系统都会忽略这种可能性。来自 How unique is UUID?:

after generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%.

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

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

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