Если вы можете использовать плоские (текстовые) файлы, вы можете сохранить файл на диске и читать / искать. Никогда не читайте все сразу. Если вам нужно, например, более быстрый индекс, возможно, вы можете создать индекс и номер записи и использовать индекс, чтобы найти правильные «строки», и использовать номер записи, чтобы получить оставшиеся данные из базы данных поля постоянного размера или в качестве номера строки текстовый файл.
Я не знаю об этой Java и том статическом инициализаторе, но для меня это звучит как ограничение размера кода, а не данные? Почему данные времени выполнения влияют на байт-код?
Не могу предложить конкретные библиотеки. Может быть, есть какая-нибудь библиотека стилей Berkeley DB, DSV или xBase.