【发布时间】:2019-03-08 00:13:08
【问题描述】:
已经提出了类似的问题,但我的问题与一些研究完全不同。
在注册网站时,我提供
FirstName:Ajay,LastName:Kumar
现在后端 API 需要从这两个文本中创建一个唯一 ID。为什么?
是的,我使用了自动增量整数列来存储用户 ID,但这是唯一 ID,它将显示在用户个人资料页面的 URL 中,就像大多数网站(fb、twitter、quora)一样。我认为它有助于 SEO 搜索人们的个人资料。
我的想法:
1.名字 + 姓氏 + mysql-auto-generated-id
API 在创建用户之前无法知道自动生成的 ID。
2。 Concat FirstName & LastName 并将其作为唯一 ID,如果数据库失败
并返回 id 违规错误,然后开始追加从 0 开始的数字,直到找到有效的 Id。
它增加了数据库往返次数。
3.名字 + 姓氏 + [随机整数]
它还增加了数据库往返。
4.使用连接到 FirstName + LastName 的 UUID。
由于 UUID 是 128 位的,这很长,我需要对其进行子串化。这可能再次导致重复 ID
5.将当前时间戳与 FirstName + LastName 连接起来。
但是这个值也很长。
我最有效的方法是使用 UUID 和子字符串 4-5 个起始字符。如果唯一 ID 已被占用,请尝试使用另一个 UUID。我认为这也是减少数据库往返次数的最佳选择。
我很想知道网站如何处理这个问题(除了这个数据库递归调用,直到找到一个有效的唯一 ID)?唯一 ID 中有正确的数字分配(例如在 Quora 中)。例如tim-cook-1、time-cook-2。
【问题讨论】:
-
1. 下的注释也适用于其他所有方法。所以我认为 1. 没有缺点
-
第一点与另一点完全不同。对于1,我什至不知道MySql 将分配给新用户的ID。因此,在创建用户帐户时,我无法将其附加到用户唯一 ID。
-
如果 MySQL 拒绝为配置文件创建记录(无论出于何种原因),您必须将其注册为创建用户帐户失败。这应该意味着创建用户帐户在 MySQL 请求完成之后结束,所以当你说在数据库记录之前必须有 URL 时,不清楚你的意思是什么。
标签: java mysql algorithm uniqueidentifier unique-id