То, что вы описываете, может быть хорошо согласовано с Elasticsearch , который может использоваться как распределенный механизм поиска текста.
Вы также спрашивали о "уменьшении размера без потери данных?" Это сжатие без потерь , и оно очень дружественно для памяти, но может ограничить вашу способность на самом деле выполнять поиск, так как для этого может потребоваться сначала распаковка каждой строки, сама операция O (N), которая эффективно побеждает точку .
Вы также упомянули хранилище NoSQL по сравнению с реляционной базой данных. Это правильное мышление, но все еще может не быть точным соответствием. С хранилищем NoSQL связано Redis , хранилище значений ключей в памяти. Однако Redis обычно используется для поиска , т. Е. «Я даю вам URL; вы возвращаете мне HTML-код кэшированной страницы, связанный с этим URL». Это точно не описывает ваш случай и его особенности, которые могут не вписываться в модель Redis. Опять же, Elasticsearch, вероятно, хорошее место для начала.