05-08-2009, 02:37 PM
J'avais moi aussi réfléchi à des solutions pour ça, voici quelques axes de réflexion que je n'ai pas développés :
- une table de liaison "user-topic" qui ne contient que 2 champs, indexés : l'id du user, et l'id du topic. Cette table ne contiendrait QUE les sujets lus par un utilisateur. Ainsi la quantité de données n'est pas une multiplication pure et dure des tables users et topics. Y en a moins. Ajouter à cela un filtre sur les dates (on considère qu'un message plus vieux de X jours par rapport à la dernière connexion du user), ainsi qu'un cron pour vider justement ces "flags" (pourquoi conserver la notion "message-lu" pour un message qu'on considère d'office comme étant lu, car antérieur de X jours à la dernière connexion de l'utilisateur).
Ainsi, seuls les utilisateurs actifs créeraient des lignes dans cette tables (ce qui limite beaucoup), et les anciens messages sont progressivement "balayés".
Ainsi pour jeuweb.org (3000 user, 5000 sujets) on n'atteint jamais les 15 M de lignes. Pour 100 visiteurs réguliers, sur 100 sujets de moins de 10 jours, ça fait 1 million. Ca réduit de bcp le problème
- autre solution, simpliste rapide, mais imprécise : comparer les dates de dernières connexion aux dates de sujet. Je ne m'étends pas sur le sujet, vu sa simplicité (et son fonctionnement pas tout idéal)
- une table de liaison "user-topic" qui ne contient que 2 champs, indexés : l'id du user, et l'id du topic. Cette table ne contiendrait QUE les sujets lus par un utilisateur. Ainsi la quantité de données n'est pas une multiplication pure et dure des tables users et topics. Y en a moins. Ajouter à cela un filtre sur les dates (on considère qu'un message plus vieux de X jours par rapport à la dernière connexion du user), ainsi qu'un cron pour vider justement ces "flags" (pourquoi conserver la notion "message-lu" pour un message qu'on considère d'office comme étant lu, car antérieur de X jours à la dernière connexion de l'utilisateur).
Ainsi, seuls les utilisateurs actifs créeraient des lignes dans cette tables (ce qui limite beaucoup), et les anciens messages sont progressivement "balayés".
Ainsi pour jeuweb.org (3000 user, 5000 sujets) on n'atteint jamais les 15 M de lignes. Pour 100 visiteurs réguliers, sur 100 sujets de moins de 10 jours, ça fait 1 million. Ca réduit de bcp le problème
- autre solution, simpliste rapide, mais imprécise : comparer les dates de dernières connexion aux dates de sujet. Je ne m'étends pas sur le sujet, vu sa simplicité (et son fonctionnement pas tout idéal)