Быстро меняющийся файл конфигурации / статуса?ДЖАВА - PullRequest
0 голосов
/ 29 марта 2011

Мне нужен какой-то способ хранения файла конфигурации / статуса, который необходимо быстро изменить.Состояние каждой пары ключ-значение (ключ-значение) сохраняется в этом файле.Статус нужно менять слишком быстро, в соответствии с состоянием оборудования связи (цифрового мультимедийного вещания).

Каков наилучший способ создания такого файла?ини?XML?Любой готовый автор файлов в Java?Я не могу использовать базы данных.

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Похоже, вам нужен произвольный доступ для частого обновления частей файла без перезаписи всего файла. Разработайте двоичный формат файла и используйте API RandomAccessFile для чтения / записи. Вы захотите использовать фиксированное число байтов для ключа и значения, чтобы вы могли индексировать середину файла и обновлять значение без необходимости перезаписи всех следующих записей. По сути, вы бы заново реализовали, как база данных хранит таблицу.

Другая альтернатива - хранить только одну пару ключ-значение на файл, так что затраты на перезапись файла незначительны. Может быть, вы можете придумать способ использовать имя файла в качестве ключа и сохранять только значение в содержимом файла.

Я был бы склонен попробовать второй вариант, если вы не имеете дело с более чем несколькими тысячами записей.

1 голос
/ 29 марта 2011

Очевидное решение состоит в том, чтобы поместить информацию о конфигурации в объект Properties, а затем использовать Properties.store(...) или Properties.storeToXML(...) для сохранения в файл выходного потока или модуля записи.

Вам также нужно что-то сделать, чтобы все, что читает файл, увидели непротиворечивый снимок. Например, вы можете каждый раз записывать в новый файл и выполнять танец удаления / переименования, чтобы заменить старый на новый.

Но если частота обновления файла слишком высока, вы создадите много дискового трафика и будете вынуждены замедлить работу приложения. Это будет применяться (в конце концов) независимо от того, какой формат файла / API вы используете. Итак, вы можете захотеть вообще не записывать в файл.

0 голосов
/ 29 марта 2011

В какой-то момент конфигурация, которая изменяется слишком быстро, становится «состоянием программы», а не конфигурацией.Если он меняется так быстро, почему вы уверены, что можете по-настоящему записать его в файловую систему, а затем прочитать из нее?

Расскажите подробнее о том, каков статус того, кто является потребителем данных....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...