Помогите Оптимальный способ хранения данных

MSArtyone

Активный участник
Баллы
61
Добрый вечер, сейчас работаю над мини-игрой. Нужно каким-то образом хранить данные игроков.

Вариантов несколько:
1. Хранить данные всех игроков в одном файле .yml
2. Для каждого игрока создавать отдельный файл .yml
3. JSON
4. SQLite

Какой лучше выбрать? Пожалуйста, прокомментируйте свой выбор.
 
  1. Безумие. Без комментариев;
  2. Никогда не пользовался yml, но если не требуется постоянно изменять этои конфиги, то вполне вариант хранить в файлах UUID-игрока.yml;
  3. Это подойдёт лучше, если хочешь выгружать какие-то данные игрока на страницы сайта;
  4. Опять же, только если не требуется часто менять параметры. Неизвестно что получится когда игроков 15 одновременно поменяют свои данные. Разве SQLite-база не блокируется при обращении? 😕
Я бы сделал хранение нативным, в NBT.
 
  1. Безумие. Без комментариев;
  2. Никогда не пользовался yml, но если не требуется постоянно изменять этои конфиги, то вполне вариант хранить в файлах UUID-игрока.yml;
  3. Это подойдёт лучше, если хочешь выгружать какие-то данные игрока на страницы сайта;
  4. Опять же, только если не требуется часто менять параметры. Неизвестно что получится когда игроков 15 одновременно поменяют свои данные. Разве SQLite-база не блокируется при обращении? 😕
Я бы сделал хранение нативным, в NBT.
Жестб какая) Чье мнение ты ретранслируешь то?

Забыл уточнить, данные будут меняться каждую секунду.
А дефолтный MySQL чем не подошел?)
 
Забыл уточнить, данные будут меняться каждую секунду.
Если нужно часто менять данные — просто кэшируй их в каком-нибудь отдельном классе и при необходимости каким-нибудь sheduler'ом и onDisable() выгружай их в файл/БД

Я бы предпочел использование БД (любая - H2, MySQL, SQLLite) с каким-нибудь удобным фреймворком - Ebean (уже есть в Bukkit), Hibernate (слишком большой под плагин), ORMLite или какой-нибудь другой 😁

P.S. бд тоже можно использовать локально
 
Если нужно часто менять данные — просто кэшируй их в каком-нибудь отдельном классе и при необходимости каким-нибудь sheduler'ом и onDisable() выгружай их в файл/БД

Я бы предпочел использование БД (любая - H2, MySQL, SQLLite) с каким-нибудь удобным фреймворком - Ebean (уже есть в Bukkit), Hibernate (слишком большой под плагин), ORMLite или какой-нибудь другой 😁

P.S. бд тоже можно использовать локально
Огромное спасибо за совет, возьму на заметку))
 
Если нужно часто менять данные — просто кэшируй их в каком-нибудь отдельном классе и при необходимости каким-нибудь sheduler'ом и onDisable() выгружай их в файл/БД

Я бы предпочел использование БД (любая - H2, MySQL, SQLLite) с каким-нибудь удобным фреймворком - Ebean (уже есть в Bukkit), Hibernate (слишком большой под плагин), ORMLite или какой-нибудь другой 😁

P.S. бд тоже можно использовать локально
Ну удобно ему наверно для пары селектов и пары джойнов юзать ORM фрейм)

Храни в NBT - https://minecraft-ru.gamepedia.com/Формат_NBT

Minecraft хранит в этом формате практически всё.
Зачем ты еще раз свою эту чушь написал?
 
Проблему jdbc бойлерплейта решают только через ORM?)
Хочу сказать, что просто мне так удобно ;D
Оно и видно. Юзать MySQL для локальной базы.
Я использую H2 ¯\_(ツ)_/¯ Юзал бы Yaml да вот только через часа три плотной нагрузки сервер начал кидать FileSystemException: too much files open
 
Я использую H2 ¯\_(ツ)_/¯ Юзал бы Yaml да вот только через часа три плотной нагрузки сервер начал кидать FileSystemException: too much files open
Ну дык не держи открытыми 90000 файлов. Прочел конфиг и все держи в памяти, сохранил когда игрок вышел.
 
Ну дык не держи открытыми 90000 файлов. Прочел конфиг и все держи в памяти, сохранил когда игрок вышел.
Вот тут у меня и была ключевая проблема, хотел закрыть, но не было способа — опять же использовал какой-то фреймворк, но это уже совсем другая история 😁 Признаюсь, там скорее я рукожоп, чем YAML — плохой вариант)
 
Вот тут у меня и была ключевая проблема, хотел закрыть, но не было способа — опять же использовал какой-то фреймворк, но это уже совсем другая история 😁 Признаюсь, там скорее я рукожоп, чем YAML — плохой вариант)
В стандартном YamlConfiguration закрывает файлы после чтения. Нехрен говно юзать.
 
Лучше уж H2 чем SQLite (+ пулы с HikariCP). Быстрее, работает многопоточно без траблов (именно нормальная многопоточность, а не через блокировки файла, как SQLite).
 
Лучше уж H2 чем SQLite (+ пулы с HikariCP). Быстрее, работает многопоточно без траблов (именно нормальная многопоточность, а не через блокировки файла, как SQLite).
Не согласен. Для юзеров самое лучшее это по файлу на игрока. Ибо записей может быть очень много.
Так мы сможем одинаково быстро работать хоть с миллиардом записей юзеров.
 
Последнее редактирование:
Назад
Верх