При таком железе, почему бы не использовать MySQL или Postgre c секционированием данных блоками по 1М-10М, сделав ID инкрементарный BIGINT первичным ключом и поле данных, фиксированного размера(fixed), тогда поиск будет сводиться по сути к выбору нужной секции по iD и выбору нужной записи по формуле id*row_len. Это будет работать очень быстро даже с диска при условии, что файлы таблицы не будет фрагментированы физически на диске, ну а если из памяти не думаю что будет чем то уступать Mongo. Но естественно надо тестить
Постоянные коннекты тут будут обязательны я думаю.