Run-Length Encoding (RLE) es un algoritmo de compresión de datos sin pérdida que opera identificando y reemplazando secuencias consecutivas de valores idénticos (conocidas como 'runs') por un par que contiene el valor y el número de veces que se repite. Por ejemplo, la secuencia 'AAAABBCDDDD' se comprimiría a '4A2B1C4D'. Es particularmente efectivo para datos que contienen muchas repeticiones de valores adyacentes, como imágenes con grandes áreas de color uniforme o datos de texto con caracteres repetidos. Su simplicidad y velocidad lo hacen adecuado para escenarios donde la compresión y descompresión rápidas son cruciales, aunque su eficiencia depende en gran medida de la naturaleza de los datos de entrada.

RLE se implementa en una variedad de sistemas y formatos de archivo. Por ejemplo, es uno de los métodos de compresión disponibles en formatos de imagen como BMP (en ciertas variantes), TIFF y PCX, donde puede comprimir eficazmente imágenes con bloques de color sólido. También se utiliza en la compresión de video, como en algunos códecs de video antiguos o en etapas intermedias de procesamiento. En el ámbito de las bases de datos y el procesamiento de datos analíticos, RLE se emplea a menudo para comprimir columnas con baja cardinalidad o datos ordenados, mejorando el rendimiento de las consultas al reducir la cantidad de datos a leer del disco. Sistemas como Apache Parquet y Apache ORC pueden utilizar RLE para la compresión de columnas.

Para un arquitecto de sistemas, comprender RLE es importante por sus trade-offs específicos. Es una técnica de compresión muy rápida y de baja complejidad computacional, lo que la hace ideal para escenarios donde la latencia es crítica y los datos exhiben alta redundancia secuencial. Sin embargo, su eficiencia es limitada en datos con poca o ninguna repetición, e incluso puede aumentar el tamaño del archivo en el peor de los casos. Un arquitecto debe considerar RLE al diseñar sistemas de almacenamiento o pipelines de datos donde se manejen grandes volúmenes de datos con patrones repetitivos, como logs, series temporales o ciertos tipos de imágenes. Es una herramienta valiosa en el arsenal de compresión, pero debe elegirse estratégicamente, a menudo en combinación con otros algoritmos de compresión más generales, para optimizar el equilibrio entre el tamaño del archivo, la velocidad de compresión/descompresión y el uso de CPU.