Страницы: Пред. 1 ... 109 110 111 112 113 ... 223 След.
[ Закрыто ] Архив темы "Решение проблем на сайте" 2011-2017 гг.
Мне сказали, что сумма баллов в рейтинговой таблице меняется в течение дня. В таком случае надо одновременно пересчитывать общую сумму, не пересчитывая остальные показатели. Это несложно и не займет много времени. Иначе выглядит некрасиво.
Таблица рейтинга
Ситуация в таблице полностью прояснилась.
Как оказалось, таблица полностью пересчитывается 1 раз в сутки ночью. Поэтому утром до каких либо действий пользователя величина его рейтинга совпадает с суммой рейтинговых составляющих в таблице.
Однако в течение дня составляющая баллов пересчитывается после каждого действия пользователя, влияющего на этот показатель, а суммарный рейтинг остается неизменным. На мой взгляд это не украшает таблицу.
Поэтому предлагаю на выбор 2 варианта исправления.
1. Таблица полностью пересчитывается 1 раз в сутки ночью и остается неизменной до следующего пересчета.
2. Одновременно с любым пересчетом любого рейтингового показателя пересчитывается сумма всех показателей.

Как один, так и другой вариант не требуют существенного времени ни для реализации, ни при выполнении, а таблица становится непротиворечивой.
Что прояснилось - отлично.
По вашим предложениям.
1. Баллы обновляются в реальном времени, так как победители ОД, конкурсного, обычных дуэлей определяются сразу. Пересчет баллов привязан к конкретному событию (игрок разгадал сканворд) и к этому игроку.
2. Пересчет рейтингов не привязан к конкретным событиям, а проводится сразу по всей базе игроков, которая на данный момент составляет более 20 тысяч, с учетом проведенной год назад чистки.
3. Теоретически можно сделать не только пересчет баллов по событию, но и пересчет общего рейтинга игроков, относящихся к событию. Однако в этом случае, поскольку надо будет проверить также: а) тур, б) баллы, в) нормативы, г) победы, то длительность пересчета будет дольше на два порядка, чем обновление баллов, что приведет к огромной нагрузке на сервер. На пересчет баллов одного игрока сервер тратит 1 мс, а на пересчет общего рейтинга этого игрока по индивидуальной схеме потратил бы уже 100 мс. По этой причине на практике, пересчет общего рейтинга по событию в реальном времени реализовывать не стали.
Я еще не говорил про кеш страницы рейтинга, чтобы рейтинг открывался моментально, то есть была статичная сформированная заранее страница рейтинга... Не всё там просто, как кажется.
Цитата
Андрей Веснин пишет:
1. Баллы обновляются в реальном времени, так как победители ОД, конкурсного, обычных дуэлей определяются сразу. Пересчет баллов привязан к конкретному событию (игрок разгадал сканворд) и к этому игроку.
Значит идем по второму предложению. К действиям по событию, когда обновляются баллы, надо добавить еще одну операцию: сосчитать сумму четырех чисел, а именно обновленное значение составляющей рейтинга по баллам и старые (не надо пересчитывать!) значения составляющих по турам, рекордам и победам, и записать полученную сумму в новое значение рейтинга.
Откуда такая уверенность?
Цитата
Андрей Веснин пишет:
Откуда такая уверенность?
В чем уверенность?
Если в том, что, как правило, так можно сделать, так я знаю, как реализуются такие механизмы, поскольку это один из аспектов моей работы.
Но я не утверждаю безапеляционно, а лишь предлагаю, поскольку в реализации конкретной системы могут быть специфические ньюансы, затрудняющие, казалось бы, очевидное решение. Однако в данном случае, полагаю, что решение на 99% легко реализуемо.
Игрок выиграл ОД - у него прибавился тур, кол-во побед, возможно, нормативы (а это надо проверить), баллы. Вы предлагаете по событию дернуть сумму общего рейтинга, только чтобы внести туда составляющую баллы. А тур, победы и нормативы пока не вносить и не пересчитывать. Я считаю, что логически это неправильно, и так не делают. Да и сомнительное удовольствие получить всё равно неточную сумму в реальном времени, так как по турам, победам и нормативам будут расхождения.
Почему же нельзя по событию пересчитывать целиком, я пояснил - увеличение нагрузки на два порядка. У нас нет неограниченного технического ресурса, так как проект по размеру домашний. В этом и заключается нюанс.
Почему нельзя пересчитывать остальное в реальном времени совершенно понятно и неоспоримо.
Суть же в том, что таблица математически должна быть правильной. Не вижу ничего криминального в том, что в показанном рейтинге будут учтены новое значение по баллам и старые (ночные) значения по остальным составляющим. Надо только объявить во всеуслышание, что баллы пересчитываются в реальном времени, а остальное только ночью. Зато неоспоримый плюс - правильная сумма в таблице.
Считается очень грубой ошибкой, если в таблице в графе, которая объявлена суммой других граф, стоит число, не являющееся суммой чисел в указанных в этих графах. Есть еще один вариант, если очень хочется оставить такую сумму, как сейчас: необходимо добавить в таблицу графу с условным названием "старые баллы", в которой будут показаны баллы, сосчитанные ночью и вошедшие в показываемую сумму рейтинга, а существующую графу назвать, например, "Текущие баллы", и, возможно, отделить ее от остальных граф пустой графой.
Суть в том, что должно быть абсолютно точно понятно, суммой каких граф является последняя графа, и стоять там должна сумма чисел из этих граф. Иначе таблица очень некачественная. Сейчас последняя графа определена как сумма всех остальных, но число в ней в течение дня перестает быть равным сумме чисел в остальных.
Изменено: ID1307 karabas Old_User - 07.03.2015 13:28:23
Сумма - это еще изменившиеся тур и победы, а не только баллы. Просто в упор не замечаете )). Нормативы скрыть можно.
Цитата
Андрей Веснин пишет:
Сумма - это еще изменившиеся тур и победы, а не только баллы. Просто в упор не замечаете )). Нормативы скрыть можно.
Все зависит от определений и указываемой в таблице информации.
Изменившиеся баллы, туры и нормативы - это текущая сумма. Колонка называется рейтинг. Что вкладывается в это понятие в этой таблице не указано. По умолчанию это должен быть текущий рейтинг, но рассчитывать его невозможно. Значит нужно определить, как понимается информация в последней графе и вывести в таблицу все участвующие в ее вычислении составные части.
Последний мой вариант (родившийся в ходе нашей беседы), который, судя по всему, оказался для вас приемлемым, дает решение. Скройте графу с текущей суммой по баллам, но обязательно покажите графу с суммой по баллам на момент ночного пересчета, и объявите, что таблица содержит информацию на момент этого ночного пересчета. Таблица становится корректной, содержание объяснено, народ получает обещанную информацию. Все довольны, таблица причесана, праздник наступил.
Страницы: Пред. 1 ... 109 110 111 112 113 ... 223 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)