Sistemas compactos de codificación numéricaProyectos de artículos

Artículos preliminares
Anonymous
 Sistemas compactos de codificación numérica

Post by Anonymous »

'''Codificación numérica compacta''' se refiere a una clase de técnicas de serialización de datos diseñadas para representar valores numéricos utilizando la mínima cantidad de espacio de almacenamiento o ancho de banda de transmisión posible. A diferencia de las codificaciones de ancho fijo (como los enteros estándar de 32 o 64 bits), las codificaciones compactas adaptan el tamaño de almacenamiento en función de la magnitud o la distribución estadística de los datos.

Estos sistemas son fundamentales para la informática moderna, particularmente en sistemas distribuidos, redes informáticas de baja latencia, compresión de bases de datos y sistemas integrados donde la eficiencia de los recursos es una prioridad.
== Clasificación ==
Los sistemas de codificación compactos generalmente se clasifican según cómo manejan el flujo de bits y si están optimizados para patrones de datos específicos.

=== Cantidad de longitud variable (VLQ) ===
Los sistemas VLQ (Cantidad de longitud variable) utilizan un número variable de bytes para representar un número entero. La implementación más común utiliza el '''Bit más significativo (MSB)''' de cada byte como "bit de continuación" para indicar si el siguiente byte es parte del mismo número.

* '''LEB128 (Little-Endian Base 128):''' Ampliamente utilizado en el formato de depuración DWARF y WebAssembly.
* '''Varints''': Una piedra angular del formato Protocol Buffers (Protobuf) desarrollado por Google.

=== Códigos universales a nivel de bits ===
Código universal (compresión de datos)|Los códigos universales no se alinean con los límites de bytes; en cambio, representan números enteros como secuencias de bits donde el prefijo permite al decodificador determinar la longitud.

* '''Codificación Elias:''' Incluye codificación Gamma, Delta y Omega. La codificación gamma es particularmente eficaz para números enteros pequeños.
* '''Codificación Golomb:''' Optimizada para datos que siguen una distribución geométrica, a menudo utilizada en compresión de audio e imagen sin pérdidas (por ejemplo, FLAC).

=== Embalaje y marco de referencia (FOR) ===
Estos sistemas se utilizan para codificar bloques de números simultáneamente, algo que se ve con frecuencia en bases de datos en columnas y bases de datos de series de tiempo (TSDB).

* '''Simple8b / Simple16:''' Estos algoritmos empaquetan varios números enteros en una sola palabra de 64 bits según el valor máximo del conjunto.
* '''PFOR (Marco de referencia parcheado):''' Esta técnica almacena un valor "base" para un bloque y codifica sólo los desplazamientos. Los valores atípicos (excepciones) se almacenan por separado para mantener altas relaciones de compresión.

== Manejo de enteros con signo ==
Representar números negativos en formatos compactos presenta un desafío, ya que el complemento a dos tradicional da como resultado una gran cantidad de números principales. Para resolver esto, se emplea '''codificación ZigZag'''. Asigna enteros con signo a enteros sin signo alternando entre números positivos y negativos:
Esto garantiza que los valores con magnitudes absolutas pequeñas den como resultado variantes codificadas pequeñas.

== Codificaciones decimales y financieras ==
Para aplicaciones que requieren alta precisión sin errores de redondeo binario, se utilizan codificaciones decimales especializadas.

* '''Decimal codificado en binario (BCD):''' Representa cada dígito decimal con cuatro bits.
* '''Decimal densamente empaquetado (DPD):''' Un método utilizado en la revisión IEEE 754-2008|Estándar IEEE 754-2008, que comprime tres dígitos decimales en 10 bits.

== Aplicaciones ==
* '''Marcos de serialización:''' Apache Thrift, Apache Avro y Protocol Buffers utilizan codificaciones compactas para reducir el tamaño de la carga útil en microservicios.
* '''Blockchain:''' Bitcoin y Ethereum utilizan varias formas de Varints para minimizar el tamaño de las transacciones almacenadas en el libro mayor.
* '''Motores de búsqueda:''' Los índices invertidos utilizan codificación Delta para comprimir listas de ID de documentos.

== Ver también ==
* Compresión de datos
* Codificación de entropía
* Código autodelimitante

== Lectura adicional ==
* Lemire, D. y Boytsov, L. (2015). "Decodificación de miles de millones de números enteros por segundo mediante vectorización". ''Software: práctica y experiencia''.
* Scholer, F., Williams, HE, Yiannis, J. y Zobel, J. (2002). "Compresión de índices invertidos."

Compresión de datos
Aritmética informática
Codificación de caracteres

More details: https://en.wikipedia.org/wiki/Compact_N ... ng_Systems

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post