Мне сказали, что сумма баллов в рейтинговой таблице меняется в течение дня. В таком случае надо одновременно пересчитывать общую сумму, не пересчитывая остальные показатели. Это несложно и не займет много времени. Иначе выглядит некрасиво.
[ Закрыто ] Архив темы "Решение проблем на сайте" 2011-2017 гг.
05.03.2015 18:57:03
|
|
|
|
06.03.2015 14:02:18
Таблица рейтинга
Ситуация в таблице полностью прояснилась. Как оказалось, таблица полностью пересчитывается 1 раз в сутки ночью. Поэтому утром до каких либо действий пользователя величина его рейтинга совпадает с суммой рейтинговых составляющих в таблице. Однако в течение дня составляющая баллов пересчитывается после каждого действия пользователя, влияющего на этот показатель, а суммарный рейтинг остается неизменным. На мой взгляд это не украшает таблицу. Поэтому предлагаю на выбор 2 варианта исправления. 1. Таблица полностью пересчитывается 1 раз в сутки ночью и остается неизменной до следующего пересчета. 2. Одновременно с любым пересчетом любого рейтингового показателя пересчитывается сумма всех показателей. Как один, так и другой вариант не требуют существенного времени ни для реализации, ни при выполнении, а таблица становится непротиворечивой. |
|
|
|
06.03.2015 18:26:15
Что прояснилось - отлично.
По вашим предложениям. 1. Баллы обновляются в реальном времени, так как победители ОД, конкурсного, обычных дуэлей определяются сразу. Пересчет баллов привязан к конкретному событию (игрок разгадал сканворд) и к этому игроку. 2. Пересчет рейтингов не привязан к конкретным событиям, а проводится сразу по всей базе игроков, которая на данный момент составляет более 20 тысяч, с учетом проведенной год назад чистки. 3. Теоретически можно сделать не только пересчет баллов по событию, но и пересчет общего рейтинга игроков, относящихся к событию. Однако в этом случае, поскольку надо будет проверить также: а) тур, б) баллы, в) нормативы, г) победы, то длительность пересчета будет дольше на два порядка, чем обновление баллов, что приведет к огромной нагрузке на сервер. На пересчет баллов одного игрока сервер тратит 1 мс, а на пересчет общего рейтинга этого игрока по индивидуальной схеме потратил бы уже 100 мс. По этой причине на практике, пересчет общего рейтинга по событию в реальном времени реализовывать не стали. Я еще не говорил про кеш страницы рейтинга, чтобы рейтинг открывался моментально, то есть была статичная сформированная заранее страница рейтинга... Не всё там просто, как кажется. |
|
|
|
06.03.2015 19:13:19
|
|||
|
|
06.03.2015 23:34:31
Откуда такая уверенность?
|
|
|
|
07.03.2015 00:52:04
Если в том, что, как правило, так можно сделать, так я знаю, как реализуются такие механизмы, поскольку это один из аспектов моей работы. Но я не утверждаю безапеляционно, а лишь предлагаю, поскольку в реализации конкретной системы могут быть специфические ньюансы, затрудняющие, казалось бы, очевидное решение. Однако в данном случае, полагаю, что решение на 99% легко реализуемо. |
|||
|
|
07.03.2015 09:09:31
Игрок выиграл ОД - у него прибавился тур, кол-во побед, возможно, нормативы (а это надо проверить), баллы. Вы предлагаете по событию дернуть сумму общего рейтинга, только чтобы внести туда составляющую баллы. А тур, победы и нормативы пока не вносить и не пересчитывать. Я считаю, что логически это неправильно, и так не делают. Да и сомнительное удовольствие получить всё равно неточную сумму в реальном времени, так как по турам, победам и нормативам будут расхождения.
Почему же нельзя по событию пересчитывать целиком, я пояснил - увеличение нагрузки на два порядка. У нас нет неограниченного технического ресурса, так как проект по размеру домашний. В этом и заключается нюанс. |
|
|
|
07.03.2015 13:27:43
Почему нельзя пересчитывать остальное в реальном времени совершенно понятно и неоспоримо.
Суть же в том, что таблица математически должна быть правильной. Не вижу ничего криминального в том, что в показанном рейтинге будут учтены новое значение по баллам и старые (ночные) значения по остальным составляющим. Надо только объявить во всеуслышание, что баллы пересчитываются в реальном времени, а остальное только ночью. Зато неоспоримый плюс - правильная сумма в таблице. Считается очень грубой ошибкой, если в таблице в графе, которая объявлена суммой других граф, стоит число, не являющееся суммой чисел в указанных в этих графах. Есть еще один вариант, если очень хочется оставить такую сумму, как сейчас: необходимо добавить в таблицу графу с условным названием "старые баллы", в которой будут показаны баллы, сосчитанные ночью и вошедшие в показываемую сумму рейтинга, а существующую графу назвать, например, "Текущие баллы", и, возможно, отделить ее от остальных граф пустой графой. Суть в том, что должно быть абсолютно точно понятно, суммой каких граф является последняя графа, и стоять там должна сумма чисел из этих граф. Иначе таблица очень некачественная. Сейчас последняя графа определена как сумма всех остальных, но число в ней в течение дня перестает быть равным сумме чисел в остальных.
Изменено:
|
|
|
|
07.03.2015 14:39:02
Сумма - это еще изменившиеся тур и победы, а не только баллы. Просто в упор не замечаете )). Нормативы скрыть можно.
|
|
|
|
07.03.2015 15:21:42
Изменившиеся баллы, туры и нормативы - это текущая сумма. Колонка называется рейтинг. Что вкладывается в это понятие в этой таблице не указано. По умолчанию это должен быть текущий рейтинг, но рассчитывать его невозможно. Значит нужно определить, как понимается информация в последней графе и вывести в таблицу все участвующие в ее вычислении составные части. Последний мой вариант (родившийся в ходе нашей беседы), который, судя по всему, оказался для вас приемлемым, дает решение. Скройте графу с текущей суммой по баллам, но обязательно покажите графу с суммой по баллам на момент ночного пересчета, и объявите, что таблица содержит информацию на момент этого ночного пересчета. Таблица становится корректной, содержание объяснено, народ получает обещанную информацию. Все довольны, таблица причесана, праздник наступил. |
||||
|
|
|||
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)