Открыть сервис

Сжатие данных и файлов

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

Основные принципы

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

Ключевой характеристикой любого алгоритма является коэффициент сжатия — отношение размера исходных данных к размеру сжатых. Этот показатель зависит от типа данных и выбранного метода. Например, текстовые документы сжимаются в 3–10 раз, фотографии — в 2–5 раз, а уже сжатые форматы (JPEG, MP3) практически не поддаются дальнейшему уменьшению.

Классификация методов

Сжатие без потерь

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

Сжатие с потерями

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

  • JPEGсжатие изображений на основе дискретного косинусного преобразования.
  • MP3 и AAC — сжатие аудио с учётом психоакустической модели слуха человека.
  • MPEG и H.264 — семейства стандартов сжатия видео, использующие межкадровую и внутрикадровую компрессию.
  • WebP и AVIF — современные форматы изображений, сочетающие методы без потерь и с потерями.

Архиваторы и форматы архивов

Архивацияобъединение нескольких файлов в один с последующим сжатием. Наиболее распространённые форматы:

  • ZIP — самый универсальный формат, поддерживаемый всеми операционными системами. Использует алгоритмы Deflate (комбинация LZ77 и Хаффмана) и BZIP2.
  • RARпроприетарный формат, разработанный российским программистом Евгением Рошалем. Обеспечивает высокую степень сжатия и поддерживает восстановление повреждённых архивов.
  • 7z — формат архиватора 7-Zip, использующий алгоритм LZMA (вариант LZ77 с арифметическим кодированием). Обеспечивает один из лучших коэффициентов сжатия.
  • TAR — формат объединения файлов без сжатия, обычно применяется вместе с GZIP или XZ в Unix-подобных системах.

История развития

Первые алгоритмы сжатия появились в 1950-х годах вместе с развитием вычислительной техники. В 1952 году Дэвид Хаффман опубликовал свой алгоритм кодирования. В 1977–1978 годах Авраам Лемпель и Яаков Зив разработали словарные методы LZ77 и LZ78, ставшие основой большинства современных алгоритмов.

В 1980-х годах Терри Вэлч создал алгоритм LZW, использованный в формате GIF. В 1993 году вышел стандарт JPEG, а в 1994 году — MPEG-1, определившие развитие мультимедийных технологий. В 1993 году Евгений Рошаль выпустил первый архиватор RAR. В 1999 году появился формат 7z, а в 2010-х годах — современные алгоритмы Brotli и Zstandard, ориентированные на высокую скорость работы.

Области применения

Сжатие данных повсеместно используется в современных технологиях:

  • Операционные системы — встроенные средства сжатия NTFS (Windows) и ZFS (Unix-подобные системы) уменьшают занимаемое место на дисках.
  • Сети и интернет — протоколы HTTP используют сжатие gzip и Brotli для ускорения загрузки веб-страниц.
  • Мультимедиа — все цифровые фотоаппараты, видеокамеры и музыкальные сервисы применяют сжатие с потерями.
  • Базы данных — сжатие строк и страниц в СУБД сокращает объём хранилища и ускоряет чтение.
  • Резервное копирование — архивация данных перед хранением на лентах и облачных сервисах.

Критерии выбора метода

Выбор алгоритма сжатия определяется несколькими факторами: требуемый коэффициент сжатия, скорость работы, объём потребляемой памяти и допустимость потерь. Для текстовых документов предпочтительны методы без потерь, для фотографий — JPEG или WebP, для видео — H.264 или H.265. В системах реального времени, например в видеоконференциях, критична скорость, поэтому используются упрощённые алгоритмы с меньшим коэффициентом сжатия.

Интересные факты

  • Алгоритм Хаффмана был создан Дэвидом Хаффманом как курсовая работа в Массачусетском технологическом институте.
  • Формат GIF долгое время был предметом патентных споров из-за алгоритма LZW, что привело к разработке свободного формата PNG.
  • Современный формат JPEG XL поддерживает как сжатие без потерь, так и с потерями, обеспечивая обратную совместимость с JPEG.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →