Apache Parquet incorpora codificación ALP para datos de punto flotante

Fuentes: Apache Parquet adds ALP encoding for floating-point data

Apache Parquet ha integrado la codificación de punto flotante sin pérdidas adaptativa (ALP), una nueva técnica de compresión diseñada para valores decimales almacenados como tipos de punto flotante (FLOAT y DOUBLE). Esta adición ofrece una relación de compresión similar a la del algoritmo zstd, pero con una descompresión significativamente más rápida, soporte para acceso aleatorio y optimización para hardware de GPU y SIMD. El formato ALP es particularmente eficaz para datos como precios monetarios, coordenadas geográficas y mediciones científicas, donde los valores suelen tener un rango de exponentes limitado. A diferencia de la codificación existente BYTE_STREAM_SPLIT, ALP resuelve las limitaciones de velocidad de descompresión y acceso aleatorio al almacenar los valores en vectores de enteros compactados, eliminando la dependencia de secuencias de datos. Las pruebas realizadas en implementaciones pre-release de Rust y C++ indican que ALP es hasta 10 veces más rápida en la descompresión y permite recuperar valores individuales miles de veces más rápido que las combinaciones tradicionales de PLAIN o BYTE_STREAM_SPLIT seguidas de compresión ZSTD. Aunque la relación de compresión es ligeramente inferior a la de la compresión pesada, la mejora en el rendimiento de acceso a los datos la hace atractiva para aplicaciones que priorizan la velocidad de lectura sobre la máxima compresión. La especificación técnica detalla cómo ALP selecciona exponentes y factores para minimizar el espacio ocupado y cómo gestiona excepciones para valores que no pueden representarse exactamente en el punto flotante estándar IEEE 754.