Недавно у меня возникла та же проблема, и я смотрел на все под солнцем, включая NoSQL и кэши.Вам нужна хеш-карта на основе диска / файла / резервной копии.
Berkeley DB Java Edition - безусловно, лучший.Это быстро, масштабируемо и полно, но вы не можете распространять его среди клиентов, не распространяя ваш исходный код или не покупая коммерческую версию у Oracle.
Единственный другой выбор, кроме изобретения колеса, - это JDBM2.Он также имеет хэш-карту и древовидную карту.Вы несете ответственность за регулярную очистку диска, чтобы предотвратить OutOfMemoryError, и он не так быстр, как Berkeley DB, но это очень хороший второй вариант.