Я внедряю Leaderboard в свое веб-приложение django и не знаю, как это сделать.В настоящее время я просто использую SQL, чтобы упорядочить своих пользователей и, из этого, создать таблицу лидеров, однако это создает две основные проблемы:
Производительность шокирует.Я только пытался масштабировать его до нескольких сотен пользователей, но могу сказать, что вычисление рейтинга происходит медленно, а чрезмерное кэширование раздражает, поскольку мне нужно, чтобы пользователи видели их рейтинг после добавления в таблицу лидеров.
Почти невозможно сказать пользователю, на какой позиции он находится, не выполнив весь расчет таблицы лидеров снова.
Я не развернул, но я оцениваю около 5% обновлений таблицы лидеров по сравнению с95% читают (возможно, даже больше) таблицы лидеров.Поэтому моя последняя идея - снова вычислять таблицу лидеров каждый раз, когда добавляется пользователь, с полем позиции, которое я могу легко отсортировать, и не нужно пересчитывать, чтобы отобразить рейтинг пользователя.
Однако это можетбудет ли проблема, если несколько пользователей совершают транзакции одновременно, будет ли достаточно блокировки или рейтинг повысится?Кроме того, я планирую поместить это в отдельную базу данных исключительно для этих лидеров, что является лучшим?Я слышал хорошие вещи о Redis ...
Есть ли лучшие способы решить эту проблему?(кто-нибудь знает, как ТАК делает свои списки лидеров?)