Comprimir y descomprimir datos en MySQL con compress y uncompress

Publicado por parzibyte en

MySQL ofrece una función llamada compress (y lo inverso, uncompress) que sirve para almacenar datos comprimidos, ahorrando espacio.

En este post voy a explicar cómo comprimir y descomprimir datos en MySQL con ejemplos.

Disponibilidad de compress y uncompress

El manual indica que para que estas funciones estén disponibles, el software debió ser compilado con una librería de compresión, por ejemplo, zlib.

Para comprobar que puedes comprimir y descomprimir datos ejecuta una simple consulta:

select compress("hola");

Si no hay problemas (como que la función no existe, o si devuelve null) entonces puedes continuar.

1 – Probar disponibilidad de compress en MySQL

Definición de tabla para guardar un dato comprimido

Se recomienda definir el tipo de dato como BLOB o VARBINARY. Como ejemplo tenemos la siguiente tabla:

Para mostrar qué tanto espacio ahorramos guardamos ambos datos: el texto original y el comprimido.

Ahora es momento de insertar datos. Para insertar un valor comprimido hay que almacenar lo que devuelve la llamada de compress:

Son algunos ejemplos de prueba. La inserción es correcta, ahora utilizaré la función LENGTH para medir la longitud de los datos…

select length(original), length(comprimido) from probar_compresion;

Con el siguiente resultado:

2 – Comprobar diferencia entre valor original y comprimido

En el primer caso, el original mide 437 y el comprimido 253; en el segundo caso el original es de 140 y el comprimido de 116.

La razón de compresión no siempre será la misma, pues depende de varios factores y del algoritmo de compresión.

Lo importante es que los datos realmente se están comprimiendo. Para recuperar los datos originales se invoca a uncompress.

select uncompress(comprimido) from probar_compresion\G

3 – Descomprimir datos en MySQL usando uncompress

Así se puede recuperar el valor original.

Podemos hacer updates, llamar a otras funciones y todas las cosas permitidas, pues al final compress y uncompress son funciones de MySQL.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

0 Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: