¿Acceso aleatorio a archivos comprimidos?

Tengo un archivo muy grande comprimido con gzip sentado en el disco. El entorno de producción está basado en la "nube", por lo que el rendimiento del almacenamiento es terrible, pero la CPU está bien. Anteriormente, nuestra línea de procesamiento de datos comenzó congzip -dc transmisión de los datos desde el disco.

Ahora, para paralelizar el trabajo, quiero ejecutar varias canalizaciones en las que cada una tome un par de compensaciones de bytes (inicio y final) y tome esa parte del archivo. Con un archivo plano esto podría lograrse conhead ytail, pero no estoy seguro de cómo hacerlo de manera eficiente con un archivo comprimido; si yogzip -dc y canalizar enheadLos pares de desplazamiento que se encuentran hacia el final del archivo implicarán una búsqueda inútil a través de todo el archivo a medida que se descomprime lentamente.

Entonces, mi pregunta es realmente acerca del algoritmo gzip: ¿es teóricamente posible buscar un desplazamiento de byte en el archivo subyacente u obtener una porción arbitraria de él, sin las implicaciones completas de descomprimir todo el archivo hasta ese momento? De no ser así, ¿de qué otra manera podría particionar eficientemente un archivo para el acceso 'aleatorio' mediante múltiples procesos y minimizar la sobrecarga de rendimiento de E / S?

Respuestas a la pregunta(3)

Su respuesta a la pregunta