Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Хранение данных игроков

Статус
Закрыто для дальнейших ответов.

ql_Nik_lp

Старожил
Девелопер
Пользователь
Баллы
173
Имя в Minecraft
ql_Nik_lp
Всем доброго времени суток!
Недавно занялся разработкой Плагинов под CB, и вот уже возник первый вопрос, а именно вопрос о типах хранения данных.
Я лично знаю 3(2) типа хранения информации о игроках:
1) YAML
2) База данных (.db)
3) База данных типа (MySQL / PostgreSQL / etc)

Хотелось бы узнать, есть ли альтернативы, и если таковые есть, в чем их преимущества или недостатки.

Заранее благодарю.
 
@ql_Nik_lp,
Все зависит от того, какое количество данных и какого типа нужно хранить.
Формат YAML - подходит для хранения конфига, либо небольшого списка параметров (ключ-значение)
у Java есть встроенные функции обработки этого формата. Главное и самое большое преимущество - возможность редактирования файлов вручную.
Базу данных в виде файла использовать категорически не рекомендую. Это может потребоваться только в редких случаях - когда плагин хранит большое количество информации, и скорость поиска ее является критическим значением (для плагинов типа logBlock)
Внешние БД - могут предоставить доступ к своим данным разным веб-обвязкам и другим приложениям. Я считаю, что этот метод надежнее всех. Но опять же - стоит ли использовать БД для хранения небольшого количества информации.

Есть еще один вариант, подходит для хранения игровых данных. Например, сохранить состояние инвентаря, игрока, всех мобов в определенном регионе или же блоки. Суть такова:
Вытаскиваем нужные данные в виде NBT-объекта, модифицируем их или дополняем (если нужно), сохраняем в файл.
Когда потребуется - загружаем файл, по полученным данным восстанавливаем объект.
Где-то в недрах пакета net.minecraft.server есть обфусцированный класс, который проводит сохранение NBT-тега в файл и, соответственно, чтение. Файлы при этом gzipятся.
Например, WorldEdit использует такой способ для сохранения schematic файлов.
 
у Java есть встроенные функции обработки этого формата
Ложь. В целом для хранения небольших объемов данных вида ключ-значение я рекомендую использовать java. util.Properties, т.к. он будет быстрее Yaml (если мне не изменяет память). Во всех остальных случаях лучше рассматривать SQL, т.к. он быстрее flatfile. NBT лучше использовать на очень больших объемах данных
 
Огромное спасибо!
Именно то что хотел услышать :)
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх