Создание очень, очень, очень большой карты в Java

Используя Java, я хотел бы создать карту, которая может расти и расти и потенциально быть больше, чем объем доступной памяти. Теперь очевидно, что при использовании стандартной POJO HashMap мы исчерпаем память, и JVM аварийно завершит работу. Поэтому я думал о карте, которая, если узнает, что память заканчивается, может записать текущее содержимое на диск.

Кто-нибудь реализовал что-нибудь подобное или знает какие-нибудь существующие решения?

Я пытаюсь прочитать очень большой ASCII файл (скажем, 50 Гб) по строке за раз. Каждая строка содержит ключ и значение. Ключи могут быть продублированы в файле. Затем я буду хранить каждую строку в Map, которая является ключами к списку значений. Эта карта - объект, который будет просто расти и расти.

Любой совет будет очень признателен.

Phil

Update:

Спасибо всем за комментарии и советы. С проблемой, которую я описал, база данных является правильным, масштабируемым решением. Я должен был указать, что это временная карта, которая должна быть создана и использоваться в течение короткого периода времени для помощи в разборе файла. В этом случае предложение Майкла "хранить только номер строки вместо фактического значения" является наиболее подходящим. Отметить ответ(ы) Майкла как рекомендуемое решение.

5
задан Phil 28 September 2011 в 10:55
поделиться