En la conferencia organizada por Facebook, @Scale, en San José, California, se mostraron dos tecnologías que emplea el sitio y que se han liberado para el uso público , y no sólo para aprovecharlas sino como parte del movimiento de código abierto. Una de ellas es el algoritmo de compresión Zstandard y el motor de almacenamiento MyRocks.
La compresión Zstandard es una tecnología que reduce el tamaño de los archivos sin perder información que, según Facebook, sustituirá el algoritmo de compresión Deflate, usado en muchísimo software actualmente. Esta técnica ya se usa en productos como Zip, Gzip y Zlib.
Zstandard 1.0 es un nuevo algoritmo de compresión de datos que combina técnicas como la entropía de los estados finitos con un desempeño mucho más rápido y que, además, está optimizado para los procesadores modernos.
Acerca de esto, en el blog de Facebook, Yan Collet y Chip Turner compararon el Zstandard contra Zlib, lz4 y xz.
“Cada uno de estos algoritmos ofrecen diferentes pros y contras: lz4 busca ser más rápido, xz intenta tener mejores niveles de compresión y zlib busca un balance entre velocidad y tamaños de archivos comprimidos”, detallaron.
De acuerdo a los “benchmarks”, es decir, las pruebas comparativas, Zstandard fue sustancialmente más rápido que xz y Zlib y comprimió tanto como Zlib.
Los desarrolladores piensan que este algoritmo es además altamente escalable.
Facebook también anunció que MyRocks estaría disponible en código abierto. La empresa usa InnoDB y MySQL como motores de almacenamiento para los datos, pero cuando los desarrolladores en Facebook dijeron que InnoDB tenía ineficiencias en espacio, decidieron escribir una amplificación del mismo usando almacenamiento flash.
Para aliviar esto, Facebook desarrolló RocksDB, un sistema embebido que es más rápido en el almacenamiento y usa mejor los recursos que InnoDB.
Sin embargo, RocksDB no tiene soporte para replicación y no tiene una capa SQL por lo que los desarrolladores tuvieron que construir MyRocks, un nuevo proyecto de código abierto que integra RocksDB como un nuevo motor de almacenamiento de MySQL. Esto permite el uso de RocksDB como almacenamiento backend mientras se siguen soportando las características de MySQL.
Los desarrolladores están aún en el proceso de migrar a MyRocks pero ya han dicho que cuando esto se haga, se usará 50% menos almacenamiento que el que usa InnoDB.
Referencias: Facebook Code (Blog), Zstandard 1.0, MyRocks, i-programmer