Вы пишете:
mongodb или любой другой не встраиваемый ресурс является излишним
Знаете ли вы, что существуют механизмы встраиваемых баз данных, включая некоторые действительномаленькие?Если вы знаете, я не уверен в ваших точных требованиях и почему бы вам их не использовать.
Вы уверены, что Hibernate + встраиваемая БД (скажем, SQLite) будет недостаточно?В качестве альтернативы BerkeleyDB Java Edition , HSQLDB или других встроенных баз данных может быть вариантом.
Если вы не выполняете запросы к самому объекту (и это действительно звучиткак вы этого не делаете), возможно, сериализация будет проще, чем объектно-реляционное отображение для сложных объектов, но я никогда не пробовал, и я не знаю, что будет быстрее.Но сериализация, вероятно, является единственным способом быть полностью универсальным в типе, предполагая, что выбранная вами структура предлагает подходящий интерфейс для записи [T <: Serializable]
.Если нет, вы можете написать [T: MySerializable]
после создания своего собственного «класса типов» MySerializable[T]
(как, например, Ordering[T]
в стандартной библиотеке Scala).
Однако вы не хотите использоватьстандартная Java-сериализация для этой задачи.«Все, что сериализуемо» звучит плохо, потому что для этого предлагается использовать сериализацию, но я думаю, вы можете смягчить это до «всего, что сериализуемо с моей предпочтительной платформой».Сериализация крайне неэффективна во времени и пространстве и не предназначена для сериализации одного объекта, вместо этого она возвращает файл, заполненный специальными заголовками.Я бы предложил использовать несколько другой механизм сериализации - посмотрите здесь для сравнения.
Дополнительные причины не , чтобы пойти по пути пользовательской реализации
Кроме того, звучит так, как будто вы читаете файл по существу в обратном направлении, и это довольно плохая схема доступа с точки зрения производительности на дисках без SSD: после чтения сектора требуется почти полное вращение диска дляполучить доступ к предыдущему одному.
Более того, как отметил Крис Шейн в комментарии выше, вам нужно будет использовать решение на основе страниц, и вы 'мне нужно справиться с объектами переменного размера.