大用户管理的设计问题

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

欢迎大家讨论思想。
Cache + 散列: 如果没有cache到的话,需要遍历。
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iisbsd 2010-04-06
  • 打赏
  • 举报
回复
做成键-值的方式(这样你就可以用memcache或者其它非常通用的解决方案了)。

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

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

需要把手机号和用户名放在不同名字空间(比如:不同的前缀,不同的服务器等等)
lijun_tian 2010-04-06
  • 打赏
  • 举报
回复
TO yyysss520:

你的意思是说 建立一个基于属性A和B的指针数组,然后 A和B都指向 用户的信息?
lijun_tian 2010-04-06
  • 打赏
  • 举报
回复
TO yyysss520: 谢谢回复

属性A和属性B 唯一,转换成2进制作为索引。
怎么说? 不是很明白;
lijun_tian 2010-04-06
  • 打赏
  • 举报
回复
TO iisbsd: 谢谢回复

不是很清楚逻辑,如果用户必须通过A+B才能定位,你每次得到一个A或者一个B,什么样的逻辑能够定位到一个用户呢?

A是唯一属性,B也是唯一属性,但是一个用户 有A和B;

还是说你打算定位到一批用户?
一个用户;

什么叫用户数巨大?
百万级;

数据库未必不是一个可行方案。
数据库效率比较差;内存无视,但是需要效率;

lijun_tian 2010-04-06
  • 打赏
  • 举报
回复
TO iisbsd: 谢谢回复。

我想 我会参照你的意见,用2张hash表来做。 一张表做A->B的映射。另一张表做B->用户的映射。

这样无论 得到A或者B,都能做到关联。

那我就先结贴了。
yyysss520 2010-04-02
  • 打赏
  • 举报
回复
属性A和属性B 唯一,转换成2进制作为索引。
舍得用内存,建立一个足够大的数组,随便你插入、删除、查找,都直接一次定位到。
iisbsd 2010-04-02
  • 打赏
  • 举报
回复
不是很清楚逻辑,如果用户必须通过A+B才能定位,你每次得到一个A或者一个B,什么样的逻辑能够定位到一个用户呢?

还是说你打算定位到一批用户?

什么叫用户数巨大?

看你的数据量了,数据库未必不是一个可行方案。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧