2010-08-05 16 views
6

Badoo.com ha 56.000.000 profili utente. I profili possono essere cercati per sesso, età, colore dei capelli, zodiaco, educazione e così via, oltre alla distanza dalla mia città natale, lo stato online e la data di registrazione. Finora, questo sembra fattibile anche se è piuttosto una query su tabelle enormi (56 milioni di membri ...), può essere memorizzato nella cache in un modo generale.badoo.com ricerca utenti - come si può fare?

La parte interessante è che hanno anche un individuo "elenco di esclusione" (con ogni profilo si guarda, si può dire che non si desidera di incontrare questa persona). Inoltre, anche i tuoi amici non si presentano.

La seconda parte interessante sono le parti OR della query. Puoi cercare qualcuno che sia una donna, 25-35, bionda o bruna, non fumatrice, etero o bisessuale, virgo o gemello o cancro, che vive in un raggio di 50 km da Parigi e che non è tuo amico e non nella tua lista di esclusione e chi è online ora. Molte OR, query pesanti, opzioni di ordinamento, nessun modo di memorizzare nella cache o di precalcolare tutto questo, ma la ricerca restituisce 11.298 risultati in millisecondi.

Come fanno una cosa del genere con 56 milioni di set di dati e 250K chi lo utilizza, allo stesso tempo? Indici di ricerca fulltext? Database relazionali? Key Value Stores? Qualcuno ha un'idea del concetto o dell'architettura?

+0

Oppure il sito non ha davvero 56 milioni di utenti e sputa solo un insieme casuale di risultati ogni volta che esegui una ricerca. Un sito di incontri online con profili falsi e nessuna attività reale? Non dici! –

risposta

3

Essi sono molto probabilmente costruiti utilizzando una tecnologia di indicizzazione invertita come Lucene o Sfinge. Se stai cercando di creare una soluzione, la mia raccomandazione sarebbe Apache Solr (un server di ricerca creato utilizzando Lucene). È molto popolare, ha una community OSS attiva e viene utilizzato da siti come Netflix, Cnet, ecc.

1

Mi raccomando di dare un'occhiata a Badoo Dev Blog. È in russo, ma google translate aiuta molto.

Insomma stanno utilizzando MySQL sharded e memcached. Ecco alcuni badoo evolution list.

+0

si prega di correggere un deadlink –

Problemi correlati