J'ai un site Web où les gens publient des commentaires, des photos et d'autres contenus. Je veux ajouter une fonctionnalité que les utilisateurs peuvent aimer/contrairement à ces éléments. J'utilise une base de données pour stocker tout le contenu.Quelle serait une bonne stratégie pour implémenter des fonctionnalités similaires à celles de Facebook?
Il y a quelques approches que je suis à la recherche:
Méthode 1:
- Ajouter une colonne 'like_count' à la table, et incrémenter chaque fois que quelqu'un aime un article
- Ajouter une table 'user_likes' pour garder une trace que tout ce que l'utilisateur a aimé.
Avantages: Simple à mettre en œuvre, requêtes minimales requises. Inconvénients: L'élément doit être actualisé avec chaque changement de nombre similaire. J'ai toute une liste d'éléments mis en cache, ce qui va casser.
Méthode 2:
- Créer une nouvelle table « like_summary » et stocker les goûts total de chaque élément dans ce tableau
- Ajouter une table « user_likes » pour garder une trace que tout l'utilisateur a aimé.
- Cache les données like_summary dans memcache et Actionnez seulement si la valeur change
Plus: Moins charge sur le tableau principal des éléments, il peut être mis en cache sans se soucier. Les inconvénients: Trop de hits sur memcache (une page montre 20 éléments, qui doit être chargé à partir de memcache), peut être lent
Des suggestions?
La question n'a pas beaucoup de sens sans plus d'informations sur la charge prévue, les numéros d'accès et l'architecture générale et la configuration. –
Que voulez-vous dire par «implémenter facebook aime»? Voulez-vous que votre site Web duplique cette fonctionnalité (sans lien réel avec Facebook) ou souhaitez-vous une sorte d'intégration de mashup-kludge sur les sites Web? Très peu clair sans plus d'infos ... – phooji
désolé d'être peu clair .. voici quelques détails supplémentaires: 1. Il va être interne seulement (donc ne pas être intégré sur des sites externes). 2. Vous pouvez le considérer comme un peu analogue au vote-up/vote-down sur le débordement de pile. 3. Je veux m'assurer qu'il est mis à l'échelle de 500 pages vues simultanées, chaque page contenant 25 éléments avec un nombre "like" affiché à côté.Le système global est basé sur Python/Mysql/Memcache, – Toofan