一旦上传到云数据库,确保唯一 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 并修改任何重复项以使其唯一(这可能是一项非常昂贵的操作)
假设 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 并修改任何重复项以使其唯一(这可能是一项非常昂贵的操作)