生成随机数作为用户标识

时间:2016-06-27 05:26:10

标签: database random uniqueidentifier

我一直在查看Aadhar (an Indian equivalent to Social Security Number)

的唯一ID(UID)生成

他们生成一个11位数的随机数。我还在开发一个应用程序,我需要为用户提供唯一的ID,这些用户需要在整个生命周期内有效(预计用户数为40-60亿)。

当在网上查找类似的方案时,我发现最简单的方法是随机生成每个数字并连接。所以我的问题是:

  • 生成每个数字随机正确的方式来生成此类ID
  • 是否有相同的技术?
  • 在设计此类计划时需要考虑哪些因素?我问这个,因为我觉得随机数生成方案并不能确保唯一性。假设可能在给定的时间范围内),那么每一代都需要验证。即使在这种情况下,我认为该计划应该能够进行调整,以保证第二个生成的数字是唯一的或来自不同的分布。

2 个答案:

答案 0 :(得分:1)

我只需在数据库表中存储100亿个数字,从000 000 000 001到999 999 999 999.删除极端数字,如000 ... 001或666等。然后在另一列中生成一个随机数(这将是排序顺序)。如果您需要一个新号码,您可以通过一个交易来接收它,这样您就可以确保一个号码只有一个人。

我不会动态生成数字...您应该始终检查该数字是否已存在。最后,生成现有数字的机会很高。因此,生成过程将花费更长时间。

答案 1 :(得分:0)

不要重新发明自行车。看看UUID取决于您将要使用的语言,应该有一些实现。