日期:2014-05-16  浏览次数:20637 次

大用户管理的设计问题
需求:
  每个用户由2个唯一的属性A和属性B决定。 每次得到的 属性是 A或者B。 问,从每次由得来的 A或者B 如何能 定位到用户。
考虑: 
  1 用户数巨大;
  2 有插入删除操作;

欢迎大家讨论思想。
  Cache + 散列: 如果没有cache到的话,需要遍历。

------解决方案--------------------
属性A和属性B 唯一,转换成2进制作为索引。
舍得用内存,建立一个足够大的数组,随便你插入、删除、查找,都直接一次定位到。
------解决方案--------------------
做成键-值的方式(这样你就可以用memcache或者其它非常通用的解决方案了)。

举个例子,用户名和手机号都可以定位到一个用户,可以这样:
手机号-〉用户名
用户名-〉用户数据

当然根据需要可以反过来(如果根据手机号访问的比较多的话)。在用户数据中还要同时保存手机号和用户名,修改的时候可以把相应的映射都改掉。

需要把手机号和用户名放在不同名字空间(比如:不同的前缀,不同的服务器等等)