Codificación delta
La codificación delta o almacenamiento diferencial describe técnicas para la transmisión y el almacenamiento de datos en forma de sus cambios y no como archivos completos. Los cambios que se guardan en archivos discretos se denominan "deltas" o "diffs". Como técnicas para la compresión de datos , reducen los requisitos de memoria y ancho de banda al procesar datos correlacionados , como datos secuenciales (= datos que están disponibles en varias versiones ).
función
El punto de partida es un conjunto de datos que existe en dos o más versiones. Un ejemplo de esto son los textos fuente de los programas, que se guardan en cada versión de su creación. Con la tecnología convencional, todos los datos deben guardarse para cada versión.
Por lo general, dos versiones sucesivas difieren solo ligeramente. A menudo, solo se intercambian errores de mecanografía únicos en grandes cantidades de datos. La idea detrás de la codificación delta es guardar solo los cambios, no ambas versiones en su conjunto.
ejemplo
Hay dos versiones de un texto, y ambas deben guardarse:
- Esta es una oración de ejemplo.
- Esta es otra oración de ejemplo.
Para guardar el contenido de información de la segunda oración, no es necesario guardarlo en su totalidad. Es suficiente si la primera oración permanece almacenada y para la segunda oración solo se almacena la información "inserte la palabra de otra persona después de la tercera palabra ". Esto solo ahorra la diferencia con la primera versión, lo que puede resultar en un ahorro de datos considerable.
implementación
Hay dos métodos para el almacenamiento delta:
- El texto original permanece en su forma original, solo se registran los cambios a la próxima nueva versión.
- El texto actualizado se guarda y se registra el cambio de la versión anterior.
Cada cambio se registra en uno o más registros de almacenamiento delta . Contiene la posición desde el principio del archivo, luego información sobre si se debe eliminar una cantidad de bytes o qué secuencia de bytes se debe insertar. Puede haber cualquier número de tales registros entre dos versiones. Normalmente, estos registros se adjuntan al archivo junto con información sobre la versión a la que pertenecen. Este procedimiento se puede utilizar tantas veces como sea necesario y, por lo tanto, proporciona un historial completo de las versiones de un archivo.
Haz la versión que quieras
A partir de la versión básica, los cambios se realizan uno tras otro en el orden correcto de las versiones para obtener la versión deseada.
Por lo general, la versión actual es la que se usa con más frecuencia. Por lo tanto, suele tener sentido utilizar el segundo método de guardado (visualización completa de la versión actual y guardado de los cambios en las versiones anteriores). También se ha probado con muchos sistemas de control de versiones, como: B. Cumplimiento de RCS y CVS . En el caso de ramas en el historial de versiones, la segunda variante también se usa allí. Regresa de la versión actual al punto de bifurcación y luego avanza a la versión deseada de la bifurcación.
casos de uso
Dos casos de uso de la codificación delta son los sistemas de respaldo (por ejemplo, rsync ) y las herramientas de gestión de versiones de software (por ejemplo, Git).
Sistemas de respaldo
Muchas herramientas de respaldo usan codificación delta. Además de reducir el espacio de almacenamiento requerido, permite crear versiones anteriores de archivos. Sin la codificación delta, el archivo completo debería guardarse para cada ejecución de copia de seguridad, lo que aumentaría el espacio de almacenamiento necesario y la duración de la copia de seguridad.
Git
El sistema de gestión de versiones distribuido Git utiliza codificación delta en una operación llamada "Git Repack". Los objetos del repositorio que aún no se han comprimido en delta (los denominados "objetos sueltos") se comparan con un subconjunto seleccionado heurísticamente de todos los demás objetos. Los datos comunes y los deltas se juntan en un llamado "archivo de paquete" y luego se comprimen usando métodos convencionales. En los casos de uso normales en los que los archivos se cambian de forma incremental de un compromiso a otro, este procedimiento genera ahorros de memoria sustanciales.
aptitud
La naturaleza de los datos es fundamental para la eficacia de cualquier algoritmo de compresión de datos . La codificación delta es particularmente adecuada para datos que tienen diferencias leves y constantes de una versión a otra. En este caso, la codificación delta reduce significativamente la redundancia de datos . Un ejemplo de esto es un documento de texto grande en el que solo se cambian algunas oraciones.
Para un conjunto de datos sin clasificar, el grado de compresión puede ser bajo o inexistente. Los archivos binarios típicos , como los ejecutables, tienen demasiados cambios de una versión a otra que el almacenamiento diferencial no tiene un efecto de compresión. De hecho, los datos incluso se pueden ampliar con él.
En el caso de archivos comprimidos originalmente, la descompresión puede simplificar la codificación delta posterior.
En la compresión de vídeo , la codificación delta se utiliza con los fotogramas P y B codificados en diferencia y aquí contribuye en una proporción muy alta a la eficacia del método respectivo.