大家好我怀疑......
如果我有用于登录网站的用户名和密码详细信息的记录,我很可能从表单中获取用户名和密码,并将用于检查数据库中是否存在给定的用户名a contains()布尔运算,如果包含则检查密码与保存在数据库中的密码相同。
但对于像g-mail和Facebook这样的网站,有数百万条记录,而且身份验证非常快...... 如何做到这一点..他们为此做了什么方法
他们如何快速检查大型记录中是否存在某个值? 该过程是否仅涉及为处理速度添加更多服务器?
ty答案......
**
**
答案 0 :(得分:0)
您只需要一个SQL查询:
select 1 from user u
where u.login = :theEnteredLogin
and u.hashed_password = :theHashedEnteredPassword
(其中:xxx
是查询的参数)。
如果您在登录列上有索引,甚至更好,在[login - hashed_password]上,查询的执行时间不应超过几毫秒。
答案 1 :(得分:0)
嗯,他们有很多服务器和高性能数据库。在较低级别,散列表可能由快速查找的散列索引 - 二进制搜索样式。
答案 2 :(得分:0)
对于中到大型数据集索引,结合适当的磁盘,内存和cpus大小,是最常用的方法。
对于非常大的数据集,数据库可以是distributed和数据partitioned
对于非常非常大的数据集,除了上述场景外,使用的技术通常涉及使用map reduce模型。