请教下用户 ID 与相关 ID 设计规则

2016-01-26 14:20:20 +08:00
 WIwindson

1.社交网站如 Facebook 和 twitter ,他们的用户 ID 和推文 ID 都是全网唯一的吗?(即用户 ID 不会与推文 ID 重复),这个字段应该不会是自增的吧,不然很容易猜解出来。这样的话,用户表主键是此用户 ID 还是原本从 1 开始的自增 ID 呢?
2.用户 ID 与推文 ID 有必要设成字符串类型,从而加大猜解难度吗?

谢谢

4869 次点击
所在节点    程序员
10 条回复
GhostFlying
2016-01-26 14:52:03 +08:00
考虑到 username 可以更改的话。。没理由用 username 做主键吧
free6om
2016-01-26 15:00:48 +08:00
dyniao
2016-01-26 15:10:15 +08:00
自增中小数据库好管理,但是数据大了,再分个布,就很难处理了。
可以选择 GUID 、 UUID 这类
WIwindson
2016-01-26 16:07:31 +08:00
@GhostFlying 不是 username 还是 userId ,不过 ID 的话不确定是字符串还是数字
WIwindson
2016-01-26 16:08:00 +08:00
@dyniao UUID 对防止爬虫也有帮助对吗?
dyniao
2016-01-26 16:35:41 +08:00
@WIwindson 应该是能防止那种从 1 遍历的那种
mcfog
2016-01-26 16:38:06 +08:00
又想数据库里简单自增又想防止遍历可以看这个项目 => http://hashids.org/
WIwindson
2016-01-26 17:23:55 +08:00
@mcfog 谢谢, 里面提到的这篇文章也不错,[Instagram 架构的分片和 ID 的设计]( http://article.yeeyan.org/view/550060/463091)
WIwindson
2016-01-26 17:25:34 +08:00
如果需要 ID 可以做到按时间排序的话, Instagram 以及 twitter 的 snowflake 都可以做到
ck65
2016-01-26 17:29:14 +08:00
流行的方式叫做「发号机」。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/253457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX