Как сортировать по счетчику при использовании заколоченных счетчиков - PullRequest
9 голосов
/ 23 августа 2010

У меня есть приложение, основным субъектом которого является Story, и пользователи могут голосовать за каждую историю.Каждый голос увеличивает историю за vote_count.

Я обеспокоен конфликтом при записи в историю, поэтому я планирую использовать счетчик для каждой истории для отслеживания голосов.

Теперь мой вопрос: как я могу получить список историй, упорядоченных по количеству голосов?Например: показать 50 историй с наибольшим количеством голосов.

Моя первоначальная мысль - периодически запускать задачу, которая считывает значения счетчика и обновляет свойство фактической истории.Было бы хорошо, если бы результаты запроса по голосованию были немного устаревшими.

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Похоже, вы делаете небольшую преждевременную оптимизацию.Я бы пропустил осколки, пока не станет очевидно, что они вам нужны.Если вы абсолютно уверены, что начнете с них.Что касается выполнения периодических задач и результатов кэширования в свойствах для каждой истории, это может быть еще одной преждевременной оптимизацией.

У меня нет непосредственного опыта работы с движком приложений Google, так что, надеюсь, у кого-то, у кого есть информация, которой можно поделиться.

1 голос
/ 26 августа 2010

Периодическое добавление данных может быть хорошей стратегией для противодействия разбросу счетчиков с помощью шардинга.

Вы также можете попробовать другие стратегии для подсчета без шардов, как описано в другом месте:

http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding

(там вы храните свой счетчик в memcache и периодически сбрасываете накопленное значение в хранилище данных)

Насколько критично ваше приложение для небольших ошибок подсчета?

...