Как быстро войти в систему, когда база данных очень большая? - PullRequest
1 голос
/ 25 марта 2012

Мне всегда было интересно, как операция входа в систему выполняется так быстро, когда я пытаюсь войти в свой Gmail или Facebook и т. Д. Я имею в виду, что, например, Google имеет более миллиона серверов, и это занимает у меня почти 2-3 секунды, чтобы войти.Сейчас я ничего не делаю с этими большими данными, но я могу быть позже, поэтому я хотел бы раскрыть технику сейчас, когда у меня будет время.

Пожалуйста, прочитайте следующее, чтобы я знал, где моя теорияправильно (по крайней мере, часть этого).Мои мысли, где эти серверы расположены по всей стране.Допустим, 100 серверов находятся в Великобритании.Когда я пытаюсь войти в систему, он просто знает, где я нахожусь, и передает мои имя пользователя и пароль на эти серверы.Первый сервер, который найдет меня в базе данных, ответит.

Этот метод отсекает большое количество данных для проверки.Но что, когда я перееду в США, например, как он узнает, где искать в первую очередь?... и как серверы взаимодействуют с тысячами пользователей, одновременно регистрирующихся?

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Марсело правильно разделен. Большинство современных больших баз данных поддерживают разделение данных таким способом.

Чтобы ответить на другой вопрос, ваши данные могут быть реплицированы в несколько физических мест по умолчанию в любом случае для обеспечения избыточности. Использование гео-поиска на вашем IP-адресе может подсказать, какие серверы наиболее близки к отправке запроса. Или вы можете использовать решение типа «уменьшите карту» - отправьте задание на несколько серверов и просто получите ответ, который приходит первым.

Обеспечение того, чтобы ваш запрос выполнялся из ОЗУ (через кеширование), а не с диска, на котором хранится БД, имеет драматический эффект.

1 голос
/ 25 марта 2012

Google реплицирует данные практически во все центры обработки данных по всему миру. Это главная причина скорости Google. Если вы переедете в США из Великобритании, данные не будут доступны в США. Как только вы впервые войдете в США, будет вызван ближайший сервер, который, в свою очередь, найдет историю входа и реплицирует все пользовательские данные с серверов Великобритании.

Примечание. Как и ваша, даже моя теория не доказана, потому что Google никогда не раскрывает эти механизмы

1 голос
/ 25 марта 2012

Я не знаю, как они на самом деле это делают, но есть много методов для распределения нагрузки. Одним из наиболее простых решений является использование хэша вашего имени пользователя для поиска раздела, содержащего ваши учетные данные.

Если вы хотите определить местоположение сервера аутентификации, вы можете найти исходный IP-адрес в базе данных GeoIP, такой как MaxMind. Когда локальный сервер найден, если у него нет кредитов пользователя, он может выполнить однократную медленную выборку из центральной фермы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...