Помогите Как лучше сохранять игроков?

pro100koder

Активный участник
Пользователь
Баллы
76
Многие знают про то, что при рестарте/релоаде серва очищаются все list-ы, массивы, переменные, и т. д... У меня есть HashMap<ИмяИгрока,ДанныеИгрокаКакКласс>. В данных находится много разной статистики... Сколько денег, сколько чего ломал, уровень, и прочее. В общем, довольно много инфы на каждого игрока. И тут встаёт вопрос: как же всё это дело сохранять? Не буду же я старый getConfig() юзать, а для MySQL многовато данных наверное... Хз. Прост данных много, все нужные, а когда на серве зарегается 1000+ игроков - будет не сладко...
 
Если не хочешь MySQL и в кфг, тогда сохраняй в обычный .yml файл.
 
Для базы данных может и многовато если каждый тип данных будешь в отдельном столбике делать. Но если тебе не нужно ничего искать по базе данных, то эти столбики тебе не нужны и ты можешь просто записать все в один. Например в формате Ник | Данные, где Данные будут в виде Json строки.

А вообще в будущем желательно научиться правильно работать с базами данных в асинхронных потоках и не кешировать все в память, а брать только тогда, когда это нужно. На то БД и нужны. Исключительный случай - когда данные нужно брать сверх быстро.
 
Что именно тебе нужно? Если просто сбор некоторой статистики, то, думаю, лучше использовать какую-нибудь sql, вроде h2 или mysql. Если конкретно данные игроков, которые нужны только когда совершается то или иное действие по отношению к игроку(в том числе его вход/выход), то вариант с сохранением данных в .yml - самый простой для начала. Таким боком работает сохранение данных об игроках в том же Essentials - для каждого нового игрока создается файл UUID.yml, и когда в очередной раз что-то происходит - файл игрока подгружается.
 
По файлу на игрока yml - стандартный конфиг или json - gson либ, что тебе удобней.
Если данных очень много, можно заюзать nbt.
 
Для базы данных может и многовато если каждый тип данных будешь в отдельном столбике делать. Но если тебе не нужно ничего искать по базе данных, то эти столбики тебе не нужны и ты можешь просто записать все в один. Например в формате Ник | Данные, где Данные будут в виде Json строки.

А вообще в будущем желательно научиться правильно работать с базами данных в асинхронных потоках и не кешировать все в память, а брать только тогда, когда это нужно. На то БД и нужны. Исключительный случай - когда данные нужно брать сверх быстро.
И для чего тут json юзать? Да и поцан сто процентов не сможет норм работать с ним в дб, просто raw string запишет и все. Ну и собсна лучше в мускуле хранить в обычном таблице по типу id | name | property | value, повесить индексв на нейм и проперти и спокойно жить
 
Все утыкается в то, что нужно ТС'у. Если нужны сразу все данные игроков - то это, конечно, не вариант. Однако, если данные игроков нужны не 24/7, то это вполне адекватный вариант - просто выгружать при ненадобности(или не загружать вовсе).
 
Назад
Верх