Большинство алгоритмов сжатия будут одинаково плохо работать с такими данными. Тем не менее, есть несколько вещей («предварительная обработка»), которые вы можете сделать, чтобы увеличить сжимаемость данных перед подачей их в gzip-файл или алгоритм, подобный дефлятированию. Попробуйте следующее:
Сначала, если возможно, отсортируйте кортежи в порядке возрастания. Сначала используйте абстрактный идентификатор, затем отметку времени. Предполагая, что у вас много показаний с одного и того же датчика, похожие идентификаторы будут располагаться близко друг к другу.
Далее, если меры предпринимаются с регулярными интервалами, замените временную метку на разницу с предыдущей временной меткой (за исключением, конечно, самого первого набора для датчика.) Например, если все меры приняты за 5 минут интервалы, дельта между двумя временными метками обычно будет близка к 300 секундам. Поэтому поле временной метки будет гораздо более сжимаемым, так как большинство значений равны.
Затем, предполагая, что измеренные значения стабильны во времени, замените все показания на дельту от предыдущего показания для того же датчика. Опять же, большинство значений будут близки к нулю и, следовательно, будут более сжимаемыми.
Кроме того, значения с плавающей точкой являются очень плохими кандидатами на сжатие из-за их внутреннего представления. Попробуйте преобразовать их в целое число. Например, показания температуры, скорее всего, не требуют более двух десятичных цифр. Умножьте значения на 100 и округлите до ближайшего целого числа.