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

后端大佬们看过来, App 的手机通讯录数据在服务器的存储问题

  •  
  •   xiaoyong · 2020-06-29 17:00:14 +08:00 · 1991 次点击
    这是一个创建于 1606 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里的通讯录实际上是指“手机联系人”的数据。不管是“微信”还是“支付宝”,目前,但凡是个有一点点社交元素的的 App 几乎都有“通讯录”(或叫“好友”或叫“朋友”),然后点击“添加”都有一个“手机联系人”。

    这个“手机联系人”一般都是把用户手机本地通讯录数据上传到服务器保存的数据。 但是这个数据怎么存储才能提高读写的效率(需要考虑及时更新、按字母分组显示、App 内好友关系状态等基本需求),是我现在遇到的一个问题。数据少的时候还不明显。稍微多了之后,各种问题就出现了。例如:一般每个用户 100-300 条数据,平均按 200 条计算吧,如果有 10W 用户的话,这就是 2000W 条数据。

    现在求个更好的解决方案,主要是后端的数据读写机制以及存储方案设计。烦请各位大佬不吝赐教。

    10 条回复    2020-07-01 23:44:04 +08:00
    takemeaway
        1
    takemeaway  
       2020-06-29 17:03:32 +08:00
    2000W 你不会重复吗? 用户关系都是关联的啊。
    xiaoyong
        2
    xiaoyong  
    OP
       2020-06-29 17:07:06 +08:00
    @takemeaway 手机联系人里面的关系都是手机号码吧?而且每两个手机号的之间的关系都不同(例如备注名)。
    xiaolinjia
        3
    xiaolinjia  
       2020-06-29 17:16:18 +08:00
    我想这就是图数据库的用处了吧。传统的关系型数据库怎么处理好,我也蹲个答案。
    x537196
        4
    x537196  
       2020-06-29 17:25:33 +08:00
    就在客户端本地对比不行吗?
    lqs
        5
    lqs  
       2020-06-29 17:31:34 +08:00
    如果不需要反向查询(用手机号找谁的通讯录里有这个号),那么就每个手机号用 5 个字节表示,每个用户存 200 条手机号就是 1KB,全部 10 万用户的通讯录总共 100MB 空间,随便找个方案就能存下。
    ibegyourpardon
        6
    ibegyourpardon  
       2020-06-29 17:57:40 +08:00
    我怎么觉得 json 就够了。。。
    leer
        7
    leer  
       2020-06-30 08:10:45 +08:00 via iPhone
    不是存储空间的问题,是存储结构的问题
    以手机号建立用户表,以朋友表保存昵称备注
    treblex
        8
    treblex  
       2020-06-30 10:38:29 +08:00
    我以为 app 申请通讯录权限,只是拿手机号查一下用户表,看有没有你认识的好友
    我还是天真了
    xiaoyong
        9
    xiaoyong  
    OP
       2020-07-01 23:43:24 +08:00
    @lqs 我个人也趋向于你的这个思路。正在想办法实现和优化。谢谢
    xiaoyong
        10
    xiaoyong  
    OP
       2020-07-01 23:44:04 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:37 · PVG 02:37 · LAX 10:37 · JFK 13:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.