Высоконадежное хранилище для «журнала» / временных рядов - PullRequest
3 голосов
/ 01 марта 2011

В приложении, над которым я работаю, мне нужен журнал данных с обратной записью.То есть приложение накапливает данные в памяти и может хранить все данные в памяти.Однако он должен сохраняться, терпеть разумные сбои и обеспечивать резервное копирование.

Очевидно, я мог бы записывать в базу данных SQL;Дерби приходит на ум для легкого встраивания.Мне не очень нравится иметь дело с SQL API (однако помада помечена как JDBC), и мне не нужны никакие запросы, индексы или другие украшения.Записи выходят, и при перезапуске мне нужно прочитать их все обратно.

Есть ли другие подходящие альтернативы?

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Попробуйте использовать простой файл журнала.

По мере поступления данных сохраняйте их в памяти и записывайте (добавляйте) в файл. write(), за которым следует fsync(), гарантирует (в большинстве систем внимательно прочитайте документы по вашей системе и файловой системе), что данные будут записаны в постоянное хранилище (диск). Это те же механизмы, которые любой механизм баз данных использовал бы для получения данных в постоянном хранилище.

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

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

Вы смотрели (сейчас Oracle) Беркли БД для Java?«Прямой уровень персистентности» на самом деле довольно прост в использовании.Документы здесь для DPL.

Имеет различные варианты резервного копирования, поставляется с несколькими утилитами.Запускает встроенный.

(Лицензирование: форма лицензии BSD, которую я верю.)

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