функция, подобная logrotate для таблиц базы данных / файловой системы - PullRequest
1 голос
/ 19 мая 2011

tl; dr сводка: Существуют ли стандартные решения для ограничения длины таблиц базы данных и количества файлов файловой системы на основе числа, дискового пространства или времени?


У меня есть веб-служба Java, которая позволяет пользователям запускать операции, которые внутренне обрабатываются как задания. Чтобы получить доступ к результатам ранее выполненных заданий или асинхронных заданий, пользователь получает дескриптор в форме идентификатора задания. Я сохраняю всю эту информацию в нескольких таблицах базы данных реляционной базы данных (в настоящее время Apache Derby), потому что это гораздо удобнее, чем изобретать новый формат файла (а также, вероятно, гораздо более надежный и производительный). Фактические результаты работы сохраняются в виде файлов XML в файловой системе.

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

  • количество заданий (максимум n заданий и их результаты должны быть сохранены)
  • размер таблицы / каталога (таблицы должны занимать не более n ГБ на жестком диске)
  • когда задание было запущено (оставьте только задания, которые были выполнены не более n дней назад)

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

...