算法-登录 算法 很少在网上看到关于用户登录时的算法

算法-登录 算法 很少在网上看到关于用户登录时的算法

虐人心 发布于 2017-05-25 字数 303 浏览 1271 回复 7

如果有上千万的用户以后,他们都是如何来快速的查找数据库来实现登录的?肯定不是用select * from table_userinfo。 是不是会采用哈希算法或者二叉树算法把数据表分成很多张,然后跟其中一个表对应以后再进行查询? 还有像微博这种每个人都有上千条,上万条微博,它采用什么方法来降低冗余度?应该不能全放在一个表里面

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

想挽留 2017-10-27 7 楼

刚刚咨询了我们的DBA,用户记录已经超过1亿条,通过数据库分区,进行用户登录认证是很快的。具体切分思想参考楼上链接。

清晨说ぺ晚安 2017-10-05 6 楼

其实如大家所说,并没有什么特殊的算法,也还是对用户名和密码的匹配判断。重点在于查找,如你所说,是不可能只有一个表的,举例来说,假设你的手机号是湖北移动的,那么你的手机号是能够登录湖北移动官网的, 但是也同样可以登录中国移动的官网。湖北移动官网就相当于中国移动的一个子网,或者说分区。

灵芸 2017-09-12 5 楼

一般用户信息表的主键就是用户id,通过用户id获取用户信息通常就是个常量计算,其实就是按主键将信息获取.

偏爱自由 2017-07-16 4 楼

千万的用户不用分库分表,简单的可以按照ID分表就可以了,用户名和密码建立索引即可,直接select不会有问题。登录成果后可以在cookie中设置uuid,或者在session或者缓存中设置此用户已经登录的信息,这样每次在浏览web时每个链接都查数据库了。当cookie 和 缓存中没有验证信息时再显示登录验证,这样你的网站没多大压力。

瑾兮 2017-06-10 3 楼

只针对用户登录读取用户表的话,在用户id字段建索引就可以了,不需要横向切分数据库。

灵芸 2017-05-30 2 楼

冗余和查询没什么关系的吧?一个是查询的效率问题,一个是存储的效率问题,不是一个问题。LZ有点搞混了我觉得
就比如所有信息存在一个表里。这样冗余度会很高,但是按照主键查找是线性时间。如果所有信息组织的很好,冗余度很低。但是主键表查找的时候也是线性时间。。

偏爱自由 2017-05-28 1 楼

当数据太大的时候是会分表,甚至分区的, 还会做些负载集群等, 不会简单的放在一个表中的, 这篇文章可以参考一下: 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器