Кажется, учитывая большое количество записей, будет существенное количество совпадений в последовательностях символов. Вы можете построить дерево, используя записи в каждой позиции каждой последовательности как узлы. Скажем, у вас есть записи 12345 и 12346, тогда первые четыре записи в последовательности перекрываются и, таким образом, могут быть сохранены в дереве с 6 узлами.
Вы можете пройтись по дереву, чтобы увидеть, содержится ли данный символ в данной позиции, если нет, то вы бы добавили его. Когда вы достигнете конца данной строки, вы просто пометите этот узел как завершающий строковый узел. Воспроизведение уникальных записей было бы вопросом глубины первого обхода дерева, когда путь от корневого узла к каждому терминатору представляет уникальную запись.
Если вы разбиваете набор данных, скажем, на X тысяч строк и агрегируете деревья, это сделало бы хорошую работу по уменьшению карты.
Вы смотрите на пространство узлов 10 ^ 36, поэтому, если данные полностью случайны, вы смотрите на большое возможное количество узлов. Если есть много совпадений и меньшее количество уникальных записей, вы, вероятно, обнаружите, что используете намного меньше