V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WIwindson
V2EX  ›  程序员

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

  •  
  •   WIwindson · 2016-01-26 14:20:20 +08:00 · 5027 次点击
    这是一个创建于 3218 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    谢谢

    10 条回复    2016-01-26 17:29:14 +08:00
    GhostFlying
        1
    GhostFlying  
       2016-01-26 14:52:03 +08:00
    考虑到 username 可以更改的话。。没理由用 username 做主键吧
    free6om
        2
    free6om  
       2016-01-26 15:00:48 +08:00
    dyniao
        3
    dyniao  
       2016-01-26 15:10:15 +08:00
    自增中小数据库好管理,但是数据大了,再分个布,就很难处理了。
    可以选择 GUID 、 UUID 这类
    WIwindson
        4
    WIwindson  
    OP
       2016-01-26 16:07:31 +08:00
    @GhostFlying 不是 username 还是 userId ,不过 ID 的话不确定是字符串还是数字
    WIwindson
        5
    WIwindson  
    OP
       2016-01-26 16:08:00 +08:00
    @dyniao UUID 对防止爬虫也有帮助对吗?
    dyniao
        6
    dyniao  
       2016-01-26 16:35:41 +08:00
    @WIwindson 应该是能防止那种从 1 遍历的那种
    mcfog
        7
    mcfog  
       2016-01-26 16:38:06 +08:00
    又想数据库里简单自增又想防止遍历可以看这个项目 => http://hashids.org/
    WIwindson
        8
    WIwindson  
    OP
       2016-01-26 17:23:55 +08:00
    @mcfog 谢谢, 里面提到的这篇文章也不错,[Instagram 架构的分片和 ID 的设计]( http://article.yeeyan.org/view/550060/463091)
    WIwindson
        9
    WIwindson  
    OP
       2016-01-26 17:25:34 +08:00
    如果需要 ID 可以做到按时间排序的话, Instagram 以及 twitter 的 snowflake 都可以做到
    ck65
        10
    ck65  
       2016-01-26 17:29:14 +08:00
    流行的方式叫做「发号机」。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2780 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:30 · PVG 15:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.