Primeros pasos en la arquitectura no transaccional

1

Objetivos y presentación del proyecto

2

Aprende qué es un Data Warehouse

3

Bases de datos columnares y arquitectura orientada a optimización de consultas

4

¿Cómo funciona AWS Redshift?

Configura tu entorno de trabajo para Redshift

5

Creando nuestro entorno de trabajo en AWS

6

Configura tu primer cluster

7

Consumiendo Redshift: empieza la magia

8

Sentencias SQL en Redshift

Cómo diseñar tu base de datos para mejorar su desempeño

9

¿Qué es la compresión en Redshift?

10

Algoritmos de compresión con Redshift

11

Aplicando algoritmos de compresión

12

Análisis de desempeño con diferentes tipos de compresión

13

Estilos de distribución con Redshift

14

Evaluando los estilos de distribución

15

Llaves de ordenamiento para optimizar nuestras consultas

16

Aplicando ordenamiento de columnas

17

Evaluando algoritmos de ordenamiento

18

Buenas prácticas para diseñar tablas en Redshift

19

Tipos de datos en AWS Redshift

20

Reto: mejora el desempeño de tu base de datos

Manipular enormes cantidades de datos

21

Olvídate de los insert, el copy llego para quedarse

22

Cargando archivos tipo JSON

23

El comando copy a fondo

24

Manifiestos y uso de COMPUPDATE para carga con compresión automática

25

Métodos de carga alternativos al comando copy

26

¿Cómo ejecutar sentencias UPDATE y DELETE?

27

¿Cómo mantener el desempeño de tu base de datos?

28

Estadísticas y limpieza de las tablas

Buenas prácticas para diseñar y ejecutar consultas en tu base de datos

29

Agrupamiento, ordenamiento y subqueries

30

¿Qué es y cómo interpretar un explain plan?

Análisis de comportamiento y descarga de datos con Redshift

31

¿Cómo descargar datos eficientemente con UNLOAD?

32

Otras tablas útiles de Redshift para entender el comportamiento de nuestros datos

Conclusiones

33

Próximos pasos con AWS Redshift

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aplicando algoritmos de compresión

11/33
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

SELECT * FROM venue limit 10;
SELECT count(0) FROM listing;

CREATE table cartesian_venue as ()
SELECT venueid, venuename , venuecity , venuestate ,
FROM venue, listing;

CREATE table encoding_venue(
nameraw varchar(100) encode raw,
namebytedict varchar(100) encode bytedict,
namelzo varchar(100) encode lzo,
namerunlength varchar(100) encode runlength,
nametext255 varchar(100) encode text255,
nametext32k varchar(100) encode text32k,
namezstd varchar(100) encode zstd,

);

INSERT INTO encoding_venue
(
SELECT venuename,venuename,venuename,venuename,venuename,venuename,venuename
FROM cartesian_venue
);```

Una codificación de compresión especifica el tipo de compresión que se aplica a una columna de valores de datos a medida que se añaden filas a una tabla.

Si no se especifica una compresión en la instrucción CREATE TABLE o ALTER TABLE, Amazon Redshift asigna automáticamente la codificación de compresión de la siguiente manera:

A las columnas que están definidas como claves de ordenación se les asigna una compresión RAW.

A las columnas que están definidas como tipos de datos BOOLEAN, REAL o DOUBLE PRECISION se les asigna una compresión RAW.

Las columnas que se definen como tipos de datos SMALLINT, INTEGER, BIGINT, DECIMAL, CHAR, VARCHAR, DATE, TIMESTAMP o TIMESTAMPTZ tienen asignada la compresión AZ64.

Las columnas que se definen como tipos de datos CHAR o VARCHAR tienen asignada la compresión LZO.

Me sorprendiio la velocidad, en serio… muy sorprendente

sentí mucha adrenalina al ejecutar ese producto cartesiano 😏

SELECT * FROM venue LIMIT 10;
SELECT COUNT(0) FROM venue;
SELECT COUNT(*) FROM listing;
SELECT COUNT(*) FROM cartesian_venue;

SELECT venueid, venuename, venuecity, venuestate, venueseats
FROM venue
LIMIT 10;

CREATE TABLE cartesian_venue as(
SELECT venueid, venuename, venuecity, venuestate, venueseats
FROM venue, listing);

SELECT *
FROM cartesian_venue
LIMIT 10;

CREATE TABLE encoding_venue (
nameraw varchar(100) encode raw,
namebytedict varchar(100) encode bytedict,
namelzo varchar(100) encode lzo,
namerunlength varchar(100) encode runlength,
nametext255 varchar(100) encode text255,
nametext32k varchar(100) encode text32k,
namezstd varchar(100) encode zstd
);

INSERT INTO encoding_venue 
(
SELECT venuename, venuename, venuename, venuename, venuename, venuename, venuename
FROM cartesian_venue 
);

SELECT * FROM encoding_venue LIMIT 10;

SELECT COUNT(0)
FROM encoding_venue;

Y no son solo 38.8M de datos, es eso multiplicado por 7 columnas PUFFF!!

Eso fue mas rápido que El Rayo McQueen!

Topics Compression encodings:

Raw encoding
AZ64 encoding
Byte-dictionary encoding
Delta encoding
LZO encoding
Mostly encoding
Runlength encoding
Text255 and Text32k encodings
Zstandard encoding

Aplicar algoritmos de compresión en Amazon Redshift implica configurar cómo se almacenan las columnas de una tabla para optimizar el uso del almacenamiento y mejorar el rendimiento de las consultas. A continuación, se explica cómo aplicar los algoritmos de compresión en Redshift paso a paso: ### **1. Crear una tabla con algoritmos de compresión** Puedes definir la compresión en el momento de la creación de una tabla utilizando el parámetro `ENCODE` en cada columna. **Ejemplo**: CREATE TABLE mi\_tabla ( id INT ENCODE RAW, -- Sin compresión nombre VARCHAR(255) ENCODE BYTEDICT, -- Diccionario de bytes fecha TIMESTAMP ENCODE DELTA, -- Compresión por diferencias estado CHAR(1) ENCODE RUNLENGTH, -- Compresión por longitud de ejecución comentario TEXT ENCODE ZSTD -- Algoritmo ZSTD para texto largo ); ### **2. Aplicar compresión en tablas existentes** Si ya tienes una tabla creada sin compresión o con compresión ineficiente, puedes aplicar algoritmos usando `ALTER TABLE`. **Ejemplo**: ALTER TABLE mi\_tabla ALTER COLUMN nombre ENCODE BYTEDICT; > ⚠️ **Nota**: Si la tabla tiene datos, deberás recrearla o usar herramientas específicas para evitar pérdida de datos. ### **3. Analizar compresión con** `ANALYZE COMPRESSION` El comando `ANALYZE COMPRESSION` evalúa los datos existentes y sugiere los mejores algoritmos de compresión para cada columna. **Ejemplo**: ANALYZE COMPRESSION mi\_tabla; **Salida esperada**: Un informe con sugerencias para las columnas. Por ejemplo: columna1: DELTA columna2: BYTEDICT columna3: ZSTD ### **4. Recargar datos con compresión automática** El comando `COPY` puede determinar automáticamente los algoritmos de compresión adecuados al cargar datos. **Ejemplo**: COPY mi\_tabla FROM 's3://mi-bucket/mi-dataset.csv' IAM\_ROLE 'arn:aws:iam::123456789012:role/MiRole' CSV; Esto analizará los datos y aplicará la compresión más eficiente. ### **5. Recrear la tabla para optimizar la compresión** Una opción más avanzada consiste en: 1. Crear una nueva tabla con las configuraciones de compresión sugeridas. 2. Transferir los datos de la tabla original a la nueva tabla. 3. Renombrar la nueva tabla como la tabla original. **Ejemplo**: CREATE TABLE mi\_tabla\_nueva ( id INT ENCODE RAW, nombre VARCHAR(255) ENCODE BYTEDICT, fecha TIMESTAMP ENCODE DELTA, estado CHAR(1) ENCODE RUNLENGTH, comentario TEXT ENCODE ZSTD ); INSERT INTO mi\_tabla\_nueva SELECT \* FROM mi\_tabla; DROP TABLE mi\_tabla; ALTER TABLE mi\_tabla\_nueva RENAME TO mi\_tabla; ### **6. Validar el uso de compresión** Puedes verificar qué algoritmo se está usando en cada columna consultando la vista del sistema `SVV_TABLE_INFO` o `PG_TABLE_DEF`. **Ejemplo**: SELECT "column", encoding FROM pg\_table\_def WHERE tablename = 'mi\_tabla'; ### **7. Mejoras y beneficios** * **Reducción de almacenamiento**: La compresión puede reducir significativamente el espacio en disco, especialmente para datos repetitivos o categóricos. * **Consultas más rápidas**: Menos datos físicos que leer significa consultas más rápidas. * **Costos más bajos**: Al utilizar menos almacenamiento, puedes optimizar costos en tu clúster Redshift. ### **Mejores prácticas** * Siempre analiza los datos con `ANALYZE COMPRESSION` antes de aplicar compresión manualmente. * Usa compresión automática durante cargas masivas con `COPY`. * Optimiza las columnas más grandes o aquellas que se usan frecuentemente en consultas.