MySQL et Search chez Craigslist par Jeremy Zawodny

21 avril 2009 par pébé

Vous ne pouvez pas utiliser MySQL sans connaître Jeremy. Ancien Yahoo! il a été l’un des premiers à utiliser MySQL pour Yahoo! Finance et est co-auteur de MySQL High Performance, la 1ère édition. Après des années à avoir travaillé et évangélisé MySQL, Jeremy fut un responsable du développement du YDN. Il a décidé, il y a quelques temps de retourner dans la sphére de MySQL en devenant expert pour Craig List. Un de ses premiers challenges chez CL, a été d’optimiser les FULL TEXT search.

Les challenges chez CL:

  • high ad churn rate – la durée de vie des annonces sur le site. Vous ne voulez plus recevoir de mails sur un item déjà vendu
  • croissance
  • trés gros traffic
  • outil d’analyse & backend
  • croissance ( et oui )
  • besoin d’archiver tous les messages ( 100s de milions ) et pour toujours
  • Internationalisation& utf8

Les briques logicielles sont:

  • Load Balancer
  • Read Proxy ( Perl + Memcached ) & Write Procxy
  • Wed Read Proxy ( apache / mod_perl )
  • Object Cache ( Perl / Memcached ) & Search Cluster ( Sphinx )
  • Read DB Cluster ( MySQL 5.0 )

Toutes les datas sont en clusters avec un content specifique – User DB, Stats, Archive, Classified, Forum

Full Text Search chez CL en quelques points

  • partition par ville
  • attributs vs keywords
  • connections persistantes
  • 2 clusters ( 1 master, 4 slaves )
  • indexing incremental
  • slaves – requètes live
  • 1000 QPS
  • 25 MySQL -> 10 Sphinx
  • recherche alentour
  • 50M QPD ( par jour )
  • archive des messages – une DB sans schema – couchdb?

Mots-clefs : ,

Laisser une réponse