Конечно, это будет работать нормально. Как это происходит, объединение действительных файлов GZIP также является действительным файлом GZIP. Каждый отдельный разжимаемый поток называется членом gzip. Ваши метаданные просто нуждаются в смещении в файле для начала каждого потока.
Дополнительный блок заголовка gzip ограничен 64 Кбайтами, так что это может ограничивать размер блока, например порядка десятков до ста мегабайт. По другой причине я бы порекомендовал, чтобы ваши куски данных в любом случае сжимались не менее нескольких мегабайт каждый - во избежание снижения эффективности сжатия.
Недостатком конкатенации является то, что вы не получаете полной проверки целостности ввода. Например, если вы каким-либо образом испортили порядок членов, это не будет обнаружено при распаковке, поскольку проверка целостности каждого члена будет проходить независимо от порядка. Поэтому вы можете включить общую проверку несжатых данных. Примером может быть CRC всех несжатых данных, которые могут быть вычислены из CRC членов с использованием zlib's crc32_combine()
.
Мне было бы интересно узнать, если в вашем случае вы получаете значительное ускорение от параллельной декомпрессии. Декомпрессия обычно достаточно быстрая, так что она связана с вводом / выводом на запоминающем устройстве большой емкости.