¿Qué algoritmos usa Dropbox para la compresión de datos?

Según el blog de Dropbox,

  1. Compresión de imagen Lepton: ahorrando 22% sin pérdida de imágenes a 15MB / s

Lepton logra una reducción de ahorro del 22% para las imágenes JPEG existentes, al predecir los coeficientes en bloques JPEG y alimentar esas predicciones como contexto en un codificador aritmético. Lepton conserva el archivo original bit por bit perfectamente. Comprime archivos JPEG a una velocidad de 5 megabytes por segundo y los decodifica a los bits originales a 15 megabytes por segundo, de forma segura, determinista y en menos de 24 megabytes de memoria.

Hemos utilizado Lepton para codificar 16 mil millones de imágenes guardadas en Dropbox, y estamos grabando rápidamente nuestras imágenes más antiguas. Lepton ya ha guardado Dropbox múltiples petabytes de espacio.

Dropbox utiliza el algoritmo rsync para generar archivos delta con la diferencia del archivo A1 al archivo A2. Solo el delta (generalmente mucho más pequeño que A2) se carga en los servidores de Dropbox ya que Dropbox ya tiene el archivo A1. El archivo delta se puede aplicar al archivo A1, convirtiéndolo en el archivo A2.

Puede obtener más información sobre el algoritmo aquí. rsync – Wikipedia

2. Compresión sin pérdida con Brotli en Rust por un poco de Pied Piper en el backend

En Silicon Valley de HBO, la compresión de video sin pérdidas desempeña un papel fundamental para Pied Piper mientras luchan por transmitir contenido HD a alta velocidad.

Para ayudar a nuestros usuarios a sincronizar y colaborar más rápido, también tenemos que trabajar con un formato de compresión estandarizado que ya viene con la mayoría de los navegadores. En ese sentido, hemos estado trabajando en mejoras de código abierto para el códec Brotli, que permitirán enviar bits a nuestros clientes comerciales utilizando un 4,4% menos de su ancho de banda que a través de gzip.

¿Qué es brotli?

Brotli es un proyecto de código abierto de Google que incluye un codificador versátil con una gama de configuraciones de tiempo / espacio. Ya es compatible como formato de codificación en Mozilla Firefox, Google Chrome, Android Browser y Opera.

Para el código: google / brotli

Para más información: Compresión sin pérdida con Brotli in Rust para un poco de Pied Piper en el backend

Su único voto a favor puede difundir esta respuesta en todo el mundo.

Gracias !

Me pidieron que respondiera, pero no trabajo para Dropbox.
Sin embargo, trabajo para Serwis społecznościowy nk.pl – platforma komunikacji dla wszystkich internautów – nk.pl, y nuestro comunicador admite ‘archivos adjuntos’ que son archivos arbitrarios de hasta 100 MB.

La mayoría de los archivos enviados por los usuarios son JPEG, MP3 o Zip, lo que significa que ya están comprimidos: comprimir estos archivos aún más es bastante desafiante y no vale la pena el esfuerzo (a menos que trabajes para el comité JPEG).
Lo que podría hacer es desduplicar archivos; por ejemplo, hemos notado que el mismo archivo (minecraft.exe: D) se compartió miles de veces, por lo que consideramos por un tiempo reemplazar todos los archivos con el mismo MD5 con un copia única (más algún algoritmo de conteo de referencia).
Sin embargo, resultó que la posible ganancia aquí era solo una fracción del espacio total, y no valía la pena sacrificar la simplicidad de la solución actual.
Otra cosa que podríamos hacer es comprimir archivos que no están comprimidos de forma nativa (.txt, .bmp, …) pero que también es una pequeña fracción del volumen.
Lo que finalmente hemos hecho para limitar el uso del espacio es una “recolección de basura” con muerte cerebral: simplemente eliminamos los archivos de más de 3 meses.

More Interesting

¿Cuál es la complejidad de tiempo en el peor de los casos para la eliminación en una cola?

¿Cuál es el mejor algoritmo de detección de colisión de vehículos?

Teoría de grafos: ¿en qué se diferencian los árboles de expansión construidos a partir de Prim de los árboles de expansión construidos a partir de Kruskal?

Ya tengo 30 años, pero mis habilidades de programación y algoritmo no son lo suficientemente buenas. ¿Qué tengo que hacer?

¿Por qué la complejidad del algoritmo O (logN) significa que los datos disminuyen a la mitad?

¿Cuáles son los requisitos previos para la introducción del algoritmo antes de tomarlo?

¿Qué problemas comunes se resuelven con la programación dinámica?

¿Hay algún modelo físico o fenómeno que permita resolver rápidamente los problemas NP-hard?

¿Obtendría algún beneficio resolviendo los problemas del Proyecto Euler por la fuerza bruta?

¿Cuál es el papel del algoritmo simétrico en el protocolo de enlace SSL?

Programación competitiva: ¿Se pueden resolver todos los problemas de Fenwick Tree con Segment Tree?

¿Cuáles son algunos "problemas de práctica" en los que todos deberían trabajar para mejorar la programación (en cualquier lenguaje de programación)?

Si F2L se resuelve mejor de forma intuitiva, ¿por qué cada tutorial incluye algoritmos para todos los casos de F2L?

¿Deberíamos memorizar algoritmos, o simplemente saber cómo implementarlos?

¿Podría haber estándares de cifrado que descansen en un problema NP-hard distinto de la factorización entera?