Способ хранения SQL

D
На сайте с 28.06.2008
Offline
1101
323

 Для одного клиента паршу информацию раз в минуту и строю табличку, которая автообновляется. Теперь ему захотелось иметь статистику за последние 10 мин. Суть таблички - какая то игра - место, ник, баллы, деньги.

Так вот, вопрос - как правильнее хранить эту инфу? Имя игрока уникально. Хранить нужно баллы - парсятся они раз в минуту. Клиент хочет видеть как изменились баллы за последние 10 мин.

Как бы вы это реализовали?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

выводим баллы в отдельную таблицу, id user|point|date 

и добавляем туда данные.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#2
Dram :

Для одного клиента паршу информацию раз в минуту и строю табличку, которая автообновляется. Теперь ему захотелось иметь статистику за последние 10 мин. Суть таблички - какая то игра - место, ник, баллы, деньги.

Так вот, вопрос - как правильнее хранить эту инфу? Имя игрока уникально. Хранить нужно баллы - парсятся они раз в минуту. Клиент хочет видеть как изменились баллы за последние 10 мин.

Как бы вы это реализовали?

добавили бы 10 полей в базу:) premature optimization is the root of all evil

да, можно писать полные логи в отдельную таблицу исходя из того, что "когда-нибудь клиент захочет их посмотреть и/или использовать", но это думание за клиента и забегание вперед.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
D
На сайте с 28.06.2008
Offline
1101
#3

ТОже склоняюсь к тому как Леня предложил. Сделать отдельную таблицу и там

id / ник /  время /  баллы/

В момент записи проверяем сколько всего записей по данному нику и если более 13 - удаляем тот из них, который с наименьшим ID и добавляем новую запись. Так таблица не будет расти и под рукой всегда будут данные за последние 10 мин.

Skom
На сайте с 02.12.2006
Offline
166
#4
Dram #:

ТОже склоняюсь к тому как Леня предложил. Сделать отдельную таблицу и там

id / ник /  время /  баллы/

В момент записи проверяем сколько всего записей по данному нику и если более 13 - удаляем тот из них, который с наименьшим ID и добавляем новую запись. Так таблица не будет расти и под рукой всегда будут данные за последние 10 мин.

Я бы ещё всё это в Redis пихнул вместо базы.

Ключ - имя игрока, значение - массив с прогрессом.
И ttl - 600 секунд. Если нет изменений, то запись будет самовыпиливаться по прошествии ttl.
Работать будет многократно быстрее любой базы. Особенно если игроков очень много.
Если игроков очень-очень много, то лучше поднять отдельный инстанс редиса с отключённым бэкапом.

Cras amet qui numquam amavit quique amavit cras amet
W1
На сайте с 22.01.2021
Offline
284
#5
Dram #:

id / ник /  время /  баллы/

id / user_id /  время /  баллы/

Dram #:

В момент записи проверяем сколько всего записей по данному нику и если более 13 - удаляем тот из них, который с наименьшим ID 

Или удаляем все записи старше определённого времени. В зависимости от задач и алгоритмов.

Мой форум - https://webinfo.guru –Там я всегда на связи

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий