В моем приложении есть древовидная структура, которую нужно сохранить в файле локально. Я ищу какой-то вклад в то, что было бы хорошим способом реализации этого.
Дерево - это в основном дерево файлов, объекты FileNode и FolderNode расширяют объект Node. Все узлы имеют ссылку на своего родителя, а у узлов FolderNode также есть набор дочерних узлов. Корнем является FolderNode с родительским элементом, равным нулю.
Дерево может содержать от 2 до 100 000 узлов. Ширина и глубина могут быть любыми для файлового дерева (обычно более широкими, чем глубокими).
Рабочий процесс приложения:
- Загрузка всего дерева в память (путем чтения корня из файла и рекурсивного заполнения дерева)
- Пока дерево все еще имеет узлы:
- Обработка, а затем удаление листового узла
- Запись дерева в файл (обновление файла для отображения дерева в памяти)
- Удалить файл
Как вы можете сказать, файл читается только один раз, но записывается после КАЖДОГО изменения, поэтому производительность здесь явно является проблемой.
Что было бы хорошим решением для этого? Похоже, JPA со встроенной базой данных, такой как SQLite, Derby или ObjectDB, будет лучшим выбором. Это? И в таком случае, как мне смоделировать базу данных?