Сжатие данных: меньше байтов, столько же записей

Чем сжатие без потерь отличается от удаления строк, почему результат зависит от содержимого и как сравнивать размер вместе со временем чтения.

Одинаковые карточки показаны свободной стопкой и в компактной прозрачной упаковке.

Файл стал меньше — что произошло с таблицей

Аналитик получил выгрузку заказов и заметил, что после сохранения её размер уменьшился. Возникает естественный вопрос: не исчезла ли часть записей? Размер файла и число записей описывают разные свойства. Первый показывает объём представления данных, второй — сколько объектов или событий в нём содержится.

Сжатие без потерь меняет способ представления содержимого так, чтобы его можно было восстановить. Оно позволяет хранить некоторые данные компактнее. Удаление строк, выборка за короткий период или округление значений — другие операции, и их нельзя называть тем же результатом.

Почему повторения помогают экономить место

Представьте условный список из ста заказов, в которых название одного города повторяется много раз. Вместо буквального повторения длинных фрагментов компактное представление может использовать закономерности и короткие обозначения. Это упрощённая аналогия, а не описание конкретного алгоритма.

Чтобы восстановить исходное содержимое, получателю нужен совместимый способ чтения. В спецификации GZIP формат прямо описан как сжатие без потерь. Такая гарантия относится к восстановлению представленного содержимого: она не подтверждает правильность исходных заказов или бизнес-логики отчёта.

Условный пример двух объёмов

Допустим, учебная выгрузка содержит тысячу записей и занимает десять мегабайт. После сжатия она занимает четыре мегабайта. Число записей остаётся равным тысяче, если исходные данные восстановлены полностью. Объём хранения уменьшился на шесть мегабайт, то есть на шестьдесят процентов.

Если другой файл занял те же четыре мегабайта после удаления шестисот записей, это уже другая история: в нём осталось четыреста записей. Одинаковый размер не делает наборы одинаковыми. Проверять нужно и объём, и содержимое.

Для такой проверки в учебном примере сравнивают число записей, выбранные значения и контрольные итоги после чтения. Сжатие не должно незаметно превращать точные суммы в приближённые или выбрасывать неизвестные значения. Если это произошло, ищут отдельное преобразование данных.

Сжатие может быть частью файлового формата

Табличный формат иногда поддерживает сжатие внутри файла. Например, спецификация Parquet описывает разные способы сжатия блоков данных. Поэтому название формата ещё не сообщает, каким способом сжато содержимое.

Важна совместимость: система, которая пишет данные, и система, которая читает их, должны поддерживать используемый вариант. При обмене наборами стоит фиксировать не только имя файла, но и требования к его чтению. Это особенно полезно, когда данные передаются между разными инструментами и командами.

Почему меньше не всегда означает быстрее

Компактные данные занимают меньше места и требуют передать меньше байтов. Но на их преобразование и восстановление тоже расходуются вычислительные ресурсы. Итоговое время зависит от состава данных, устройства хранения и выбранного способа обработки.

Авторы Zstandard описывают компромисс между скоростью сжатия и получаемым размером. Из этого не следует универсальное правило, что максимальное сжатие всегда выгоднее. Для конкретного набора нужен проверяемый результат, а не только красивый процент экономии.

В условном испытании два варианта могут одинаково восстанавливать тысячу записей, но отличаться временем записи и последующего чтения. Команда выбирает подходящий вариант под свою задачу: архив, регулярный обмен или часто используемый аналитический набор. Универсальный победитель для всех этих случаев не обязателен.

Что сравнить на небольшом примере

  • Совпало ли восстановленное содержимое?
  • Как изменился размер в байтах?
  • Сколько времени занимает запись и чтение?
  • Поддерживает ли получатель выбранный вариант?
  • Соответствует ли проверочный набор настоящим данным?

Так сжатие становится понятным выбором представления, а не поводом сомневаться в количестве заказов по одному размеру файла. Сохранность содержимого проверяют отдельно от экономии места.

Как перейти к практике

Если хотите понимать, как такие решения работают в проектах, посмотрите Архитектор данных. Начните с назначения механизмов, затем связывайте их с задачами вашей команды.

Архитектор данных
Курс
Новинка
Архитектор данных

Архитектор данных — это специалист, который проектирует системы хранения и обработки данных, выбирает правильные технологии под разные задачи и строит масштабируемую инфраструктуру.

С нуля
Теория и практика
Диплом по окончании
12 990
₽/мес
Узнать подробнее

Что почитать рядом

Первичные источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
46

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
42

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.