注册新帐户时,用户必须提供访问代码,以确定他们有权访问哪些信息。目前,我们通过生成随机数并检查数据库来创建新代码,以确保它与任何现有值都不匹配。随着数据库的增长,我们对此存在性能问题。
我们想要一种新方法来生成这些值,以保证唯一性,而无需查询数据库来检查现有值。
我们的要求是:
2 3 4 5 6 7 8 9 B C D F G H J K L M N P Q R S T V W X Y Z
我们可以使用我们授予访问权限的数据属性做些什么,例如主键(Guid)?
答案 0 :(得分:2)
因此,如果检查代码是耗时的操作,您可以简单地生成一个GUID(几乎)保证是唯一的,然后将其视为32-char十六进制数,然后将其转换为29 - 数字系统。这个系统中的数字不是0..28,而是你的角色 - 2,3,4 ......,X,Y,Z。
GUID是128位数字,因此在29位数系统中,它将是大约26位数/字符。是的,这远远超过10位数。
另一种方法是生成随机字符串,并尝试作为主键插入数据库 - 很少,当您收到冲突时,您会收到插入错误,因此您可以处理它并生成新密钥