Я использую API потоковой передачи Twitter в реальном времени, чтобы вести активный подсчет отдельных треков.Например, я хочу отслеживать, сколько раз твиты были «яблоко», «апельсин» и «груша».Я использую Mongo для хранения данных твитов, но у меня есть вопрос о том, как лучше всего получить счетчик для каждого трека, по которому я следую.
Я буду выполнять этот запрос раз в секунду, чтобыполучить приблизительный счетчик в реальном времени для каждой дорожки, поэтому мне нужно убедиться, что я делаю это правильно:
Опция 1
Выполнить запрос подсчета дляконкретный трек
db.tweets.count({track: 'apple'})
Учитывая, что база данных твитов будет содержать МНОГО данных (потенциально миллионы) Интересно, может ли это быть немного медленно?
Опция 2
Создайте вторую коллекцию track_count и обновляйте атрибут count каждый раз, когда приходит новый твит:
{track:'apple', count:0}
{track:'orange', count:0}
{track:'pear', count:0}
Затем, когда приходит новый твит:
db.track_count.update( { track:"apple" }, { $inc: { count : 1 } } );
Затем я могу вести актуальный подсчет для каждого трека, но это означает запись в базу данных дважды, один раз для твита и еще раз для увеличения количества треков.Имея в виду, что в секунду может приходить изрядное количество (десятки, а может быть, и сотни) твитов.
У кого-нибудь есть предложения относительно лучшего способа сделать это?