如果有一个非常大的数据库,如何快速登录?

时间:2012-03-25 14:06:50

标签: performance login

当我尝试登录我的Gmail或Facebook等时,我总是想知道登录操作如何快速执行。我的意思是,谷歌,例如,有超过百万台服务器,我需要近2 -3秒登录。我现在没有对那些大数据做任何事情,但我可能会更晚,所以当我有时间时,我想现在就透露这项技术。

请阅读以下内容,以便我知道我的理论是正确的(至少是其中的一部分)。 我的想法是服务器遍布全国各地。可以说100台服务器在英国。当我尝试登录时,它只知道我在哪里并将我的用户名和密码传递给这些服务器。在数据库中找到我的第一台服务器将响应。

此方法会切断大量要检查的数据。但是,当我移居美国时,如何知道在哪里搜索? ......服务器如何处理同时登录的数千名用户?

3 个答案:

答案 0 :(得分:1)

我不知道他们是如何实际做到的,但是有很多技术可以分散负载。一个特别简单的解决方案是使用用户名的哈希来找到保存凭据的分区。

如果要对auth服务器进行地理定位,可以在MaxMind的GeoIP数据库中查找原始IP。当找到本地服务器时,如果它没有用户的信用,它可以从中央服务器场进行一次性的慢速提取。

答案 1 :(得分:1)

马塞洛的分区是正确的。大多数现代大型数据库都支持以这种方式拆分数据。

要回答问题的其他部分,默认情况下,您的数据可以默认复制到多个物理位置以实现冗余。在IP上使用地理查找可以提示哪些服务器最接近发送查询。或者您可以使用map-reduce类型的解决方案 - 将作业发送到几个服务器,然后只需先获得回复的答案。

确保从RAM(通过缓存)而不是从持久存储数据库的磁盘满足您的查询,往往会产生巨大影响。

答案 2 :(得分:1)

Google几乎将数据复制到全球所有数据中心。这是谷歌速度的主要原因。如果您从英国搬到美国,那么美国就无法获得这些数据。在美国首次登录时,将调用最近的服务器,然后查找登录历史记录并从英国服务器复制所有用户数据。

注意:和你的一样,即使是我的理论还没有得到证实,因为谷歌从未透露这些机制

相关问题