Compresión de Datos en SQL: Evaluación y Comparación de Algoritmos

Clase 11 de 33Curso de AWS Redshift para Manejo de Big Data

Resumen

¿Cómo aplicar algoritmos de compresión a una columna en Big Data?

En el mundo del Big Data, la compresión de datos es fundamental para optimizar el almacenamiento y mejorar el rendimiento de las consultas. En esta clase del curso de Reptimit para Big Data, exploramos cómo aplicar algoritmos de compresión a columnas y evaluar su eficacia. Preparémonos para experimentar con SQL y sacarle el máximo provecho a estos algoritmos.

¿Cómo comenzamos con el código?

Lo primero que hicimos fue asegurarnos de tener datos suficientes. Usamos la tabla venue, que contiene datos numéricos y de texto, aunque apenas cuenta con 202 filas. Evaluamos que comprimir tan pocos registros no tiene mucho sentido. Por lo tanto, buscamos hacer el experimento más interesante cruzando esta tabla con la tabla listening, que tiene aproximadamente 192,000 registros.

¿Por qué es crucial evitar cartesianos en SQL?

Unir tablas sin una llave de relación específica puede resultar en un producto cartesiano, generando una explosión de registros innecesaria. Tal práctica se considera una de las peores en SQL. Sin embargo, para nuestro experimento, creamos una tabla llamada cartesian_venue que contiene 38,884,394 registros, resultando del cruce cartesiano. Este proceso se completó en cuestión de segundos, evidenciando la potencia de las bases de datos orientadas a columnas.

¿Cómo creamos y populamos tablas con diferentes codificaciones?

En este paso, comenzamos creando una tabla llamada encoding_venue con diferentes tipos de codificación para la columna venue_name. Los tipos de codificación utilizados incluyen:

  • Row: Sin ninguna codificación.
  • By Dig: Codificación de diccionario.
  • LZ0: Compresión basada en Lempel-Ziv.
  • Run Length: Compresión basada en longitudes de ejecución.
  • Text 255 y Text 32K: Para manejo de texto con distintos niveles de compresión.
  • Standard ZSTD: Compresión estándar.

Aquí es como se visualiza el código SQL para la creación de la tabla:

CREATE TABLE encoding_venue (
    name_row VARCHAR(100) ENCODE ROW,
    name_by_dig VARCHAR(100) ENCODE BY DIG,
    name_lz0 VARCHAR(100) ENCODE LZO,
    name_run_length VARCHAR(100) ENCODE RUNLENGTH,
    name_text_255 VARCHAR(255),
    name_text_32K VARCHAR(32000),
    name_standard_zstd VARCHAR(100) ENCODE ZSTD
);

Insertamos los datos de la tabla cartesian_venue en encoding_venue, aprovechando la ventaja que supone que todas las operaciones se realizan sobre los mismos bloques de datos columnares.

¿Qué descubrimos acerca de la compresión de datos?

Al final de la implementación, verificamos que cada columna en encoding_venue contiene los mismos 38,884,394 registros. Esto nos permitió comparar cómo cada tipo de compresión afecta el almacenamiento y el rendimiento. Así, destacamos el potencial de las bases de datos orientadas a columnas para manejar grandes volúmenes de datos de manera eficiente.

Este proceso es un testimonio del poder de la compresión y cómo puede transformar la gestión de Big Data. Recuerda, la práctica y la experimentación son herramientas esenciales al explorar nuevas tecnologías. Adelante, continúa perfeccionando tus habilidades en Big Data y SQL. Si surge alguna duda, siempre puedes acudir a los comentarios. ¡No pierdas la motivación!