La compresión de datos es un conjunto de pasos para empaquetar los datos en un espacio más pequeño, al tiempo que permite volver a ver los datos originales. La compresión es un proceso bidireccional: un algoritmo de compresión puede utilizarse para reducir el tamaño de un paquete de datos, pero también puede ejecutarse en sentido contrario, para descomprimir el paquete a su forma original. La compresión de datos es útil en informática para ahorrar espacioen el disco o para reducir el ancho de banda utilizado al enviar datos (por ejemplo, a través de Internet).
¿Qué es la compresión de datos?
La compresión consiste en representar la información con menos bits aprovechando patrones, redundancias o características perceptuales de los datos. El objetivo puede ser conservar exactamente los datos originales (compresión sin pérdida) o permitir cierta pérdida de información irrelevante para el usuario a cambio de mayores tasas de reducción (compresión con pérdida).
Tipos principales
- Compresión sin pérdida (lossless): permite reconstruir exactamente los datos originales. Es imprescindible en textos, programas, bases de datos y archivos que requieran integridad. Ejemplos: ZIP, gzip, PNG, FLAC.
- Compresión con pérdida (lossy): sacrifica parte de la información poco perceptible para lograr mayores tasas de compresión. Es común en imágenes, audio y vídeo donde se prioriza la experiencia perceptual. Ejemplos: JPEG, MP3, AAC, H.264.
Principales algoritmos y técnicas
- Codificación estadística: Huffman, codificación aritmética. Asignan códigos más cortos a símbolos más frecuentes.
- Técnicas basadas en diccionarios: LZ77, LZ78, LZW. Reemplazan secuencias repetidas por referencias a entradas de un diccionario.
- Transformaciones: Transformada de Burrows–Wheeler (BWT), transformadas de coseno/discreta usadas en JPEG y códecs de vídeo para concentrar energía en pocos coeficientes.
- Compresión por predicción: se predice el siguiente valor y se codifica la diferencia (residuo). Muy usada en audio e imagen (por ejemplo, PNG usa predicción + DEFLATE).
- Compresión perceptual: modelos psicoacústicos o psicovisuales que eliminan información no apreciable por el oído o la vista (MP3, AAC, JPEG, códecs de vídeo).
- Algoritmos modernos: DEFLATE (gzip, PNG), Brotli (web), LZMA (7z), Brotli y Zstd (equilibrio velocidad/ratio), Bzip2 (BWT).
Medidas y métricas
- Ratio de compresión: relación entre el tamaño original y el tamaño comprimido. Por ejemplo, ratio = tamaño original / tamaño comprimido. Un ratio de 4:1 indica que el archivo comprimido es cuatro veces más pequeño.
- Porcentaje de ahorro: = (1 - tamaño_comprimido / tamaño_original) × 100 %. Ejemplo: original 10 MB, comprimido 2 MB → ahorro = (1 - 2/10)=0,8 → 80 %.
- Velocidad: tiempo de compresión y descompresión. Importante en aplicaciones en tiempo real o transmisión en streaming.
- Uso de memoria y CPU: algunos algoritmos requieren mucha memoria para altos ratios (LZMA, BWT).
- Latencia y streaming: si se necesita transmitir datos mientras se comprime, se prefieren algoritmos que soporten procesamiento en bloques o streaming.
Ejemplos prácticos
- Texto/JSON/CSV: compresión sin pérdida con gzip, Brotli o ZIP; suelen obtenerse ratios altos cuando hay repetición o estructuras predecibles.
- Imágenes: PNG (lossless) para gráficos con áreas uniformes; JPEG (lossy) para fotografías con buen compromiso calidad/tamaño.
- Audio: FLAC (lossless) para archivado, MP3/AAC/Opus (lossy) para streaming y almacenamiento con menor tamaño.
- Vídeo: H.264/H.265/VP9/AV1 (lossy por defecto) para transmisión de vídeo; la elección depende de compatibilidad, calidad y eficiencia.
- Archivos comprimidos: ZIP, 7z, tar.gz; 7z (LZMA) suele ofrecer mejores ratios a costa de más tiempo y memoria.
Caso práctico — cálculo rápido
Si tienes un archivo original de 12 MB y al comprimirlo queda en 3 MB:
- Ratio = 12 / 3 = 4 → 4:1
- Ahorro = (1 - 3/12) × 100 = 75 %
Ventajas y desventajas
- Ventajas: ahorro de espacio, menor uso de ancho de banda, mejores tiempos de transferencia, posibilidad de cifrado + compresión.
- Desventajas: tiempo de procesado, posible pérdida de calidad (en los métodos con pérdida), necesidad de elegir parámetros adecuados, compatibilidad entre herramientas/formatos.
Cuándo elegir lossless o lossy
- Usa lossless si la integridad es crítica: código fuente, documentos legales, bases de datos, imágenes médicas, archivos de audio maestros.
- Usa lossy cuando el consumo humano final es más importante que la fidelidad absoluta y se busca reducir significativamente el tamaño: distribución web de imágenes y vídeos, transmisión de audio, cámaras digitales destinadas a compartir contenido.
Consejos prácticos
- Prueba varios formatos y niveles de compresión para encontrar el mejor compromiso entre tamaño y calidad.
- Para web, usa formatos modernos: Brotli para texto (HTML/CSS/JS), WebP/AVIF para imágenes cuando sea posible.
- Mantén copias originales si trabajas con compresión con pérdida y podrías necesitar la máxima calidad más adelante.
- Considera el tiempo de descompresión en clientes/servidores y la compatibilidad con navegadores o reproductores.
La compresión de datos es una herramienta esencial en informática y comunicaciones. Conocer los distintos métodos, sus limitaciones y sus aplicaciones permite tomar decisiones informadas para optimizar almacenamiento y transferencia sin sacrificar lo que más importa: integridad o calidad perceptual.