Aleatorio externo: barajando gran cantidad de datos de la memoria

Estoy buscando una manera de mezclar una gran cantidad de datos que no caben en la memoria (aproximadamente 40 GB).

Tengo alrededor de 30 millones de entradas, de longitud variable, almacenadas en un archivo grande. Conozco las posiciones de inicio y final de cada entrada en ese archivo. Necesito barajar estos datos que no caben en la memoria RAM.

La única solución que pensé es en mezclar una matriz que contiene los números de1 aN, dóndeN es el número de entradas, con elAlgoritmo de Fisher-Yates y luego copie las entradas en un nuevo archivo, de acuerdo con este orden. Desafortunadamente, esta solución implica muchas operaciones de búsqueda y, por lo tanto, sería muy lenta.

¿Existe una mejor solución para mezclar gran cantidad de datos con una distribución uniforme?

Respuestas a la pregunta(6)

Su respuesta a la pregunta