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

如何去维护大量用户 ID?

  •  
  •   ke1e · 2017-08-17 17:14:31 +08:00 · 4280 次点击
    这是一个创建于 2655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位公司是如何维护大量用户 ID 的?

    因为很多地方查表都会用到用户 id,所以将用户的 id 单独维护起来,如果遇到需要对所有用户进行操作的时候,只需去遍历维护的 id 列表,然后再去牵扯到的表去查询即可。

    头说不考虑 redis,目前的方案是想去用文件存储,各位有啥好办法么?

    只需要方便遍历和添加新用户 id, 假设有 4000w Id

    26 条回复    2017-08-18 14:21:31 +08:00
    maemual
        1
    maemual  
       2017-08-17 17:28:33 +08:00
    “需要对所有用户进行操作”,这个需求不是很常见啊。
    wilsonwen
        2
    wilsonwen  
       2017-08-17 17:32:51 +08:00
    为什么不考虑 redis
    idblife
        3
    idblife  
       2017-08-17 17:34:01 +08:00
    用户 id 作为主键或者唯一约束不就行了,才 4000 万怕啥
    NaVient
        4
    NaVient  
       2017-08-17 17:46:19 +08:00
    对所有用户进行操作的信息应该尽量放在用户基础表里才对,而且 4000 万的数据量说实话如果不是性能到了极限瓶颈,不是特别需要刻意的重构吧,当然如果你能说服领导当我没说
    paradoxs
        5
    paradoxs  
       2017-08-17 17:48:07 +08:00
    不考虑 redis 的头, 留着过夜?
    tabris17
        6
    tabris17  
       2017-08-17 17:48:33 +08:00
    4000 万又不多,自增有什么问题?
    plprapper
        7
    plprapper  
       2017-08-17 17:58:37 +08:00
    没看懂这个“维护” 是啥意思

    是要在内存里加载? 还是别的什么
    crysislinux
        8
    crysislinux  
       2017-08-17 18:08:08 +08:00 via Android
    比如群发通知?
    noNOno
        9
    noNOno  
       2017-08-17 18:53:38 +08:00
    用户 ID 不用修改吧,只有插入和查询。可以加一些常用的条件字段到用户表,然后给上索引,更快的遍历想要的用户 ID
    noNOno
        10
    noNOno  
       2017-08-17 18:54:51 +08:00
    头考虑下 hbase 不
    celavi
        11
    celavi  
       2017-08-17 19:16:16 +08:00
    我也觉得这个操作能不能具体化一点?
    misaka19000
        12
    misaka19000  
       2017-08-17 19:21:07 +08:00 via Android
    4000w 和大量还是有差距的
    ke1e
        14
    ke1e  
    OP
       2017-08-17 19:58:50 +08:00
    @noNOno 对,不需要修改,只有插入和查询,每次查询估计都是要全部查询的
    ke1e
        15
    ke1e  
    OP
       2017-08-17 19:59:03 +08:00
    @crysislinux 嗯呐 有这个需求
    ke1e
        16
    ke1e  
    OP
       2017-08-17 20:00:02 +08:00
    @plprapper 就是简单的迭代,添加。。不知如何快速的迭代
    ke1e
        17
    ke1e  
    OP
       2017-08-17 20:04:34 +08:00
    @idblife 因为有可能牵扯到多个表的操作
    ke1e
        18
    ke1e  
    OP
       2017-08-17 20:05:41 +08:00
    @NaVient 但是有些用户行为数据就没办法放在基础表里了
    ratazzi
        19
    ratazzi  
       2017-08-17 20:16:26 +08:00 via iPhone
    如果是连续递增的数字 id 用 bitarray ?
    ke1e
        20
    ke1e  
    OP
       2017-08-17 20:22:49 +08:00 via Android
    @ratazzi 用的 mongo 所以是 objectId
    sivacohan
        21
    sivacohan  
       2017-08-17 20:24:42 +08:00 via Android   ❤️ 1
    LDAP ?
    ke1e
        22
    ke1e  
    OP
       2017-08-17 21:05:46 +08:00 via Android
    @sivacohan 我去研究下,感谢老哥
    iyangyuan
        23
    iyangyuan  
       2017-08-18 10:10:02 +08:00 via iPhone
    每个用户按 8 字节算,4000 万用户 300m 左右空间,放内存绰绰有余。
    用文件存储绝逼是坏主意,除非你们操控 io 的能力超越数据库。
    plprapper
        24
    plprapper  
       2017-08-18 13:05:17 +08:00   ❤️ 1
    Roaringbitmap 这里的吧 也许是你想要的东西
    ke1e
        25
    ke1e  
    OP
       2017-08-18 14:20:47 +08:00 via Android
    @iyangyuan 是呀,还要考虑同步问题
    ke1e
        26
    ke1e  
    OP
       2017-08-18 14:21:31 +08:00 via Android
    @plprapper 好的老哥,我研究下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:18 · PVG 15:18 · LAX 23:18 · JFK 02:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.