#database #optimization
#База данных #оптимизация
Вопрос:
На моем веб-сайте в настоящее время отображается контент в порядке ранжирования с использованием алгоритма, аналогичного этому: ранг = очки / возраст
Единственная проблема заключается в том, что по мере добавления все большего и большего контента будет непрактично генерировать рейтинг контента для каждого фрагмента контента в каждом запросе страницы. Мы не можем поместить ранг в базу данных, потому что он меняется каждую секунду.
У кого-нибудь есть идеи о том, как это оптимизировать?
В псевдокоде:
content_items = getContentFromDb();
foreach( content_items -> item ){
calRank(item);
}
sort(content_items);
foreach( content_items -> item ){
display(item);
}
Комментарии:
1. @sehe Извините, я изменил название.
2. @sehe Weird. Это изменилось на моем. Я также добавил некоторый псевдокод.
Ответ №1:
Итак, то, как вы сейчас показываете проблему, совершенно очевидно, что это в основном вопрос кэширования информации о ранжировании.
Если вы хотите поделиться caclulated рейтингами по всей ферме, я предлагаю простую базу данных ключей / значений. Их много, но, к сожалению, я не использовал ни один из них в каком-либо серьезном качестве. Я предлагаю вам ознакомиться с NoSQL и, возможно, взглянуть на memcached, couchdb, mongodb.
Однако на данный момент я бы просто посмотрел на кэширование рейтингов. Точка. Оптимизируйте при необходимости