Пользовательский поиск badoo.com - как это может быть сделано?

Badoo.com имеет 56 000 000 профилей пользователей. Профили могут искаться полом, возрастом, цветом волос, Зодиаком, образование и так далее, плюс расстояние от моего родного города, онлайн-статуса и даты регистрации. До сих пор это кажется выполнимым, даже если это - некоторый запрос на огромных таблицах (участники на 56 м...), это может кэшироваться общим способом.

Интересная часть - то, что у них также есть человек, "исключают список" (с каждым профилем, на который Вы смотрите, можно сказать, что Вы не хотите встречать этого человека). Плюс, Вы друзья не обнаруживаются также.

Вторая интересная часть ИЛИ части запроса. Можно искать кого-то, кто женщина, 25-35, блондинка ИЛИ брюнетка, некурящий, гетеросексуал ИЛИ бисексуал, Дева ИЛИ близнецы ИЛИ рак, живущий в 50-километровом радиусе Парижа и кто не друг и не на Вашем исключать список и кто онлайн теперь. Много ORs, тяжелый запрос, опции вида, никакой способ кэшироваться или предварительно вычислить все это, но поиск возвращает 11,298 результатов в миллисекундах.

Как они делают такую вещь с 56 миллионами наборов данных и 250K людей, использующих его одновременно? Индексы полнотекстового поиска? Реляционные базы данных? Хранилища Значения ключа? У кого-либо есть идея abou понятием или архитектурой?

6
задан Jens 5 August 2010 в 15:35
поделиться