2010-08-05 13 views
6

Badoo.com tiene 56,000,000 de perfiles de usuario. Los perfiles se pueden buscar por sexo, edad, color de pelo, zodíaco, educación, etc., más la distancia desde mi ciudad natal, el estado en línea y la fecha de registro. Hasta ahora, esto parece factible, incluso si se trata de una gran consulta en tablas enormes (56 millones de miembros ...), se puede almacenar en caché de forma general.badoo.com búsqueda de usuarios: ¿cómo se puede hacer esto?

Lo interesante es que también tienen una "lista de exclusión" individual (con cada perfil que mires, puedes decir que no quieres conocer a esta persona). Además, tus amigos tampoco aparecen.

La segunda parte interesante son las partes OR de la consulta. Puedes buscar a alguien que sea mujer, 25-35, rubia O morena, no fumadora, hetero O bisexual, virgo O gemelas O cáncer, que viva en un radio de 50 km de París y que no sea tu amigo y no esté en tu lista de exclusiones y quien esta en linea ahora Muchas RUP, consultas pesadas, opciones de ordenación, ninguna forma de almacenamiento en caché o pre-cálculo de todo esto, pero la búsqueda arroja 11.298 resultados en milisegundos.

¿Cómo lo hacen con 56 millones de conjuntos de datos y 250K personas que lo usan al mismo tiempo? Índices de búsqueda de texto completo? ¿Bases de datos relacionales? Tiendas clave de valor? ¿Alguien tiene una idea sobre el concepto o la arquitectura?

+0

O el sitio realmente no tiene 56 millones de usuarios y simplemente escupen un conjunto aleatorio de resultados cada vez que realiza una búsqueda. ¿Un sitio de citas en línea con perfiles falsos y sin actividad real? Usted no dice! –

Respuesta

3

Lo más probable es que se construyan utilizando una tecnología de indexación invertida como Lucene o Sphinx. Si está buscando construir una solución, mi recomendación sería Apache Solr (un servidor de búsqueda creado con Lucene). Es muy popular, tiene una comunidad OSS activa, y es utilizado por sitios como Netflix, Cnet, etc.

1

Recomiendo echar un vistazo a Badoo Dev Blog. Está en ruso, pero el traductor de google ayuda mucho.

En resumen, están usando MySQL fragmentado y memcached. Aquí hay algunos badoo evolution list.

+0

por favor arregle un deadlink –

Cuestiones relacionadas