рейтинг складывается из оценок, я думаю сделать подсчет рейтинга среднего в рантайме в бд, при каком количестве строк примерно это будет работать, стоит ли сразу делать динамический подсчет рейтинга при добавлении оценки?
Я же правильно, что при большом количестве данных (несколько миллионов) подсчет количества для каждого запроса чтобы просто что-то отобразить, будет работать долго?
зачем вам считать этот рейтинг для каждого запроса?
Поэтому и думаю что лучше заранее подсчитывать, когда что-то добавляется что меняет рейтинг
Это зависит от соотношения записи чтения рейтинга и сложности вычисления рейтинга
А как лучше это тогда рассчитать, например сложность вычисления рейтинга пока будет среднее арифметическое, чтение будет много, каждый раз когда пользователь заходит на сайт
Ну средне арифметическое исходя из чего? Сколько данных нужно обработать для этого?
Из отзывов и оценок, в среднем 5-10 тысяч оценок например
Если оценка пятизвездочная, то не резонно ли хранить по колонке на каждое значение (1,2,3,4,5) и инкрементировать/декрементировать при выставлении/снятии оценки, а сами оценки по пользователю хранить отдельно? Либо пересчитывать рейтинги периодически вычислять с задержкой.
Ну я вот примерно так же думаю, только вопрос как реализовать лучше одновременное обращение к этим полям, блокировку пессимистическую делать? Как я понял без блокировки с транзакциями только это не получится реализовать
а что страшное произойдет при одновременном обращение? ну при учете того что атомарность инкремента гарантирует база
А в бд есть такая функция инкремента?
А если мне нужно запись перед этим получить, а только потом обновлять, то тут уже блокировку использовать?
Обсуждают сегодня