У меня есть приложение, основным объектом которого является История
, и пользователи могут голосовать за каждую историю. Каждый голос увеличивает критерий_толдера
для истории.
Я обеспокоен записью раздора в историю, поэтому я планирую использовать счетчик для каждой истории для отслеживания голосов.
Теперь мой вопрос: как я могу получить список историй, упорядоченных по количеству голосов? Например: покажите 50 историй с наибольшим количеством голосов.
Моя первоначальная мысль - периодически запускать задачу, которая считывает значения счетчиков и обновляет свойство фактической истории. Было бы хорошо, если бы результаты запроса по голосованию были немного устаревшими.
Похоже, вы проводите некоторую преждевременную оптимизацию. Я бы пропустил сегментированные счетчики, пока не станет очевидно, что они вам нужны. Если вы в этом уверены, то непременно начните с них. Что касается запуска периодической задачи и результатов кеширования в свойстве для каждой истории, это может быть еще одной преждевременной оптимизацией.
У меня нет прямого опыта работы с движком приложений Google, так что надеюсь, у кого-нибудь, кто знает, будет какая-то информация, которой я могу поделиться.
Периодическое добавление данных может быть хорошей стратегией противодействия рассеянию счетчиков при осколках.
Вы также можете попробовать другие стратегии подсчета без сегментов, как описано в другом месте:
http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding
( там вы держите свой счетчик в кэше памяти и периодически сбрасываете накопленное значение в хранилище данных)
Насколько критично ваше приложение для незначительных ошибок подсчета?