Какова лучшая стратегия для достижения этой цели? Является ли встраивание базы данных в память, такой как hsqldb, хорошей причиной для получения такого рода атомарности / транзакционного поведения?
Да. Если вам нужно транзакционное поведение, используйте хорошо протестированную систему, которая была разработана с учетом этого, вместо того, чтобы пытаться накатывать свою собственную поверх ненадежной подложки.
Файловые системы, как правило, не поддерживают транзакции с несколькими файлами.
Файловые системы, отличные от Windows, и NTFS, как правило, имеют свойство, позволяющее выполнять атомарную замену файлов, поэтому, если вы не можете использовать базу данных и
- все файлы находятся в одном достаточно маленьком каталоге
- , которым владеет ваше приложение и
- , который хранится на одном физическом диске:
тогда вы можете сделать следующее:
- Скопируйте содержимое каталога, используя соответствующие жесткие ссылки.
- Изменить 5 файлов.
- Атомно поменять измененную копию каталога на оригинальную