Внешнее перемешивание: перемещение большого объема данных из памяти

Я ищу способ перетасовать большой объем данных, который не помещается в память (около 40 ГБ).

У меня около 30 миллионов записей переменной длины, хранящихся в одном большом файле. Я знаю начальную и конечную позиции каждой записи в этом файле. Мне нужно перетасовать эти данные, которые не помещаются в оперативной памяти.

Единственное решение, о котором я подумал, - это перемешать массив, содержащий числа из1 вN, гдеN количество записей, сАлгоритм Фишера-Йейтса и затем скопируйте записи в новый файл, в соответствии с этим порядком. К сожалению, это решение включает в себя множество операций поиска и, следовательно, будет очень медленным.

Есть ли лучшее решение для перетасовки больших объемов данных с равномерным распределением?

Ответы на вопрос(6)

Ваш ответ на вопрос