【发布时间】:2014-06-20 16:50:06
【问题描述】:
我们正在开发一个 Web 应用程序,我们希望使用电子邮件作为主键,以便我们可以使用轻量级事务来避免人们使用同一电子邮件进行注册。但是我们遇到了为用户配置文件生成 URL 的问题。我们不能使用 URL 中的电子邮件。
我们一直在考虑对他的电子邮件进行哈希处理(例如使用 bcrypt)并将其用作主键,这样 URL 就不会暴露他的电子邮件。这是一个好习惯吗?
其他解决方案涉及为用户信息使用多个表,但这使得避免电子邮件重复的过程更加复杂。
有什么建议吗?
编辑:虽然给出了一些,但也许有一个解决方案。使用标准 UUID 作为主键,然后在 email 列上使用带有主键的第二个表 email_to_uuid。当新用户注册时,我们生成一个 UUID 并执行轻量级事务,在 email_to_uuid 中插入一个新值(如果不存在)。之后,我们使用电子邮件读取表,如果 UUID 是我们刚刚生成的,那么我们获得了正确的用户注册,可以继续将数据插入主表中。这种方法听起来正确吗?
【问题讨论】:
-
您的编辑展示了一个可行的解决方案和一个非常好的使用模式。
标签: cassandra