Лучший формат файла относительно стандартной строки и целочисленных данных? - PullRequest
1 голос
/ 20 июня 2011

Для моего проекта мне нужно хранить информацию о протоколах (отправленные данные (наиболее вероятные целые числа) и в порядке их отправки) и информацию, которая может быть отформатирована примерно так:
'ID' 'STRING' 'ДОПОЛНИТЕЛЬНЫЕ ИНТЕГРИРОВАННЫЕ ДАННЫЕ'
Эта информация будет прочитана Java-программой и сохранена в памяти для обработки, но я не знаю, какой формат будет наиболее разумным для хранения этих данных?

РЕДАКТИРОВАТЬ: Вот дополнительная информация:
1) Я буду использовать эти данные на игровом сервере.
2) Поскольку это игровой сервер, скорость не является первостепенной задачей, поскольку эти данные будут считываться и использоваться в основном при запуске, что не должно происходить очень часто.
3) Потребление памяти, однако, хотелось бы сохранить на минимуме.
4) Второй «пример» данных будет использоваться в качестве «словаря» для поиска названий конкретных игровых предметов, их статистики и других целочисленных данных (и, следовательно, может стать очень большим, в отличие от первых данных, содержащих информацию о протоколе, где каждый файл будет отмечать только небольшие фрагменты протокола, например, протокол входа в систему).
5) И да, я хотел бы, чтобы данные были «редактируемыми человеком».

РЕДАКТИРОВАТЬ 2: Вот выбор, который я сделал:
JSON - для описания протокола
CSV - Для словарей

Ответы [ 4 ]

3 голосов
/ 20 июня 2011

Существует множество факторов, которые могут иметь значение - вот что может помочь вам разобраться в этом:

1) Скорость / использование памяти: если данные должны загружаться очень быстро или они очень великивы, вероятно, захотите использовать свой собственный двоичный формат.

2) Переносимость / совместимость. Сбалансированность с # 1 - это соображение, что вы, возможно, захотите использовать данные в другом месте с программами, которые не читаютпользовательский двоичный формат.В этом случае вашими сильными нападающими, вероятно, будут CSV, dBase, XML и мой личный фаворит, JSON.

3) Простота: форматы с разделителями, такие как CSV, легко читать, писать и редактировать вручную,Либо используйте двойные кавычки с правильным экранированием, либо выберите разделитель, который не будет отображаться в данных.

Если бы вы могли опубликовать дополнительную информацию о вашей ситуации и о том, насколько важны эти факторы, мы могли бы помочь вам в дальнейшем..

0 голосов
/ 21 июня 2011

В дополнение к форматам, предлагаемым здесь другими (CSV, XML, JSON и т. Д.), Вы можете рассмотреть возможность сохранения информации в файле свойств Java.(См. Класс java.util.Properties.) Код уже существует для вас, поэтому все, что вам нужно выяснить, - это имена свойств (или префиксы имен), которые вы хотите использовать.

Класс Properties также обеспечивает хранение / загрузку свойств в простом формате XML.

0 голосов
/ 20 июня 2011

Я написал аналогичную спецификацию протокола с использованием XML. (Доступно здесь .)

Я думаю, что это хорошее совпадение, поскольку оно отражает иерархическую природу определения сообщений / сетевых пакетов / полей и т. Д. Порядок полей хорошо определен и т. Д.

Я даже написал генератор кода, который генерировал классы отправки / получения сообщений с методами для каждого типа сообщений в XSLT.

Единственный недостаток, который я вижу, это многословие. Если у вас очень простая структура спецификации, я бы посоветовал вам использовать простой домашний формат и написать для него парсер, используя генератор парсеров по вашему выбору.

0 голосов
/ 20 июня 2011

Как насчет XML, JSON или CSV ?

...