J'utilise l'API Twitter en temps réel pour garder un compte actif de certaines pistes. Par exemple, je veux garder une trace du nombre de fois que 'apple', 'orange' et 'pear' sont tweeté. J'utilise Mongo pour stocker les données du tweet, mais j'ai une question sur la meilleure façon d'obtenir le compte pour chacune des pistes que je suis.MongoDB - Consommer les Tweets et compter les données
Je vais courir cette requête une fois par seconde pour obtenir un compte près de en temps réel pour chaque piste, donc je dois me assurer que je fais dans le droit chemin:
Option 1
exécuter un comptage requête sur une piste particulière
db.tweets.count({track: 'apple'})
Compte tenu de la base de données tweet contiendra beaucoup de données (potentiellement des millions) Je me demande si cela pourrait être un peu lent?
Option 2
Créer une deuxième collection, 'track_count' et mettre à jour un 'count' attribuer à chaque fois qu'un nouveau tweet est disponible en:
{track:'apple', count:0}
{track:'orange', count:0}
{track:'pear', count:0}
Puis, quand vient un nouveau tweet dans:
db.track_count.update({ track:"apple" }, { $inc: { count : 1 } });
Je peux alors garder un à jour comptage pour chaque piste, mais cela signifie que l'écriture à la base de données deux fois, une fois pour le tweet et encore une fois pour incrémenter le nombre de pistes. En gardant à l'esprit qu'il pourrait y avoir un nombre équitable (dizaines, peut-être des centaines) de tweets arrivant par seconde.
Quelqu'un at-il des suggestions quant à la meilleure méthode pour ce faire?
Je me demandais ce que tu as fait à la fin? Deuxième collection pour les incréments ou peut-être en mémoire opérationnelle comme Redis? – Maziyar