У меня есть проект, который вычисляет ряд «статистики» о производительности пользователей, а затем показывает их им. Все эти статистические данные в конечном итоге исходят из большой таблицы «взаимодействий», которые фиксируют взаимодействие пользователей с сайтом. На данный момент все эти статистические данные рассчитываются путем просмотра этих данных. Мы широко используем постоянное кэширование, чтобы ускорить эту работу.Статистика пользователя: «взаимный расчет» или объемный расчет + кеширование
Мы планируем перейти к «итеративному дизайну», где статистические значения хранятся в db, и при регистрации каждого взаимодействия мы обновляем значения в зависимости от того, что вклад этих взаимодействий в каждый балл, поэтому мы по существу итеративно обновляя значения. (сейчас мы просто загрязняем кеш).
Я вижу некоторые проблемы с итерационным дизайном, потому что это означает, что у нас есть эта избыточная, потенциально не синхронизированная информация, хранящаяся в нашей базе данных, что затрудняет добавление новых статистических данных и означает большую работу над каждым журналом взаимодействия. Преимущество заключается в том, что он упрощает статистический поиск до одиночного удара db!
Что-то в этом итеративном проекте вызывает сигналы тревоги для меня, но я не могу отрицать потенциальную экономию времени. Должен ли я повиноваться этому чувству кишки, или идти вперед и делать это?
некоторые цифры: Каждая статистика рассчитывается из нескольких сотен строк и нескольких ударов db. Несмотря на то, что они называются статистическими данными, количество хрустов не является значительным, реальное «узкое место» производительности манипулирует данными. – Chris