Как оптимизировать / масштабировать этот алгоритм?

#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.

Однако на данный момент я бы просто посмотрел на кэширование рейтингов. Точка. Оптимизируйте при необходимости