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

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

24/33
Recursos

Aportes 6

Preguntas 1

Ordenar por:

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

El comando fixedwidth indica el numero de columna + dos puntos + numero de caracteres utilizados.
Un archivo de manifiesto indica donde se desea cargar los archivos.

copy estudiante FROM 's3://mibucketredshift/tercer_cargue.csv'
credentials 'aws_iam_role=arn:aws:iam::XXXXXX:role/MiRolRedshift'
region 'us-east-2'
fixedwidth '0:1,1:9,2:9,3:2,4:10'
dateformat 'mm-dd-yyyy';

{
    "entries": [
        {"url":"s3://mibucketredshift/cargue_1.csv", "mandatory":true},
        {"url":"s3://mibucketredshift/cargue_2.csv", "mandatory":true}
    ]
}

copy estudiante FROM 's3://mibucketredshift/test.manifest'
credentials 'aws_iam_role=arn:aws:iam::XXXXXX:role/MiRolRedshift'
delimiter ';'
ignoreheader 1
manifest
region 'us-east-2';


copy sales_compression_on FROM 's3://mibucketredshift/sales_tab.txt'
credentials 'aws_iam_role=arn:aws:iam::XXXXXX:role/MiRolRedshift'
delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' COMPUPDATE ON region 'us-east-2';

copy sales_compression_off FROM 's3://mibucketredshift/sales_tab.txt'
credentials 'aws_iam_role=arn:aws:iam::XXXXXX:role/MiRolRedshift'
delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' COMPUPDATE OFF region 'us-east-2';

SELECT * 
FROM pg_table_def
WHERE tablename = 'sales_compression_on';

SELECT * 
FROM pg_table_def
WHERE tablename = 'sales_compression_off';

Poderosísima herramienta Redshift

CREATE TABLE IF NOT EXISTS public.sales_compression_on
(
	salesid INTEGER NOT NULL  ENCODE raw
	,listid INTEGER NOT NULL  ENCODE raw
	,sellerid INTEGER NOT NULL  ENCODE raw
	,buyerid INTEGER NOT NULL  ENCODE raw
	,eventid INTEGER NOT NULL  ENCODE raw
	,dateid SMALLINT NOT NULL  ENCODE RAW
	,qtysold SMALLINT NOT NULL  ENCODE raw
	,pricepaid NUMERIC(8,2)   ENCODE raw
	,commission NUMERIC(8,2)   ENCODE raw
	,saletime TIMESTAMP WITHOUT TIME ZONE   ENCODE raw
);

CREATE TABLE IF NOT EXISTS public.sales_compression_off
(
	salesid INTEGER NOT NULL  ENCODE raw
	,listid INTEGER NOT NULL  ENCODE raw
	,sellerid INTEGER NOT NULL  ENCODE raw
	,buyerid INTEGER NOT NULL  ENCODE raw
	,eventid INTEGER NOT NULL  ENCODE raw
	,dateid SMALLINT NOT NULL  ENCODE RAW
	,qtysold SMALLINT NOT NULL  ENCODE raw
	,pricepaid NUMERIC(8,2)   ENCODE raw
	,commission NUMERIC(8,2)   ENCODE raw
	,saletime TIMESTAMP WITHOUT TIME ZONE   ENCODE raw
);


copy sales_compression_on from 's3://mybucketredshiftsantiago/tickitdb/sales_tab.txt'
credentials 'aws_iam_role=arn:aws:iam::XXXX:role/MiRoleRedshift'
delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' COMPUPDATE ON region 'us-east-2';

copy sales_compression_off from 's3://mybucketredshiftsantiago/tickitdb/sales_tab.txt'
credentials 'aws_iam_role=arn:aws:iam::XXXX:role/MiRoleRedshift'
delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' COMPUPDATE OFF region 'us-east-2';

SELECT * FROM pg_catalog.pg_table_def 
WHERE tablename = 'sales_compression_off';

SELECT * FROM pg_catalog.pg_table_def 
WHERE tablename = 'sales_compression_on';

Gran clase!!!

### **Manifiestos y Uso de COMPUPDATE para Carga con Compresión Automática en Amazon Redshift** Amazon Redshift proporciona herramientas avanzadas para manejar cargas de datos de manera eficiente, aprovechando el uso de **manifiestos** y la opción **COMPUPDATE** para compresión automática. A continuación, desglosamos estos conceptos, su implementación y mejores prácticas. ### **Manifiestos en Amazon Redshift** Un **manifiesto** es un archivo en formato JSON que contiene una lista de objetos almacenados en Amazon S3 para ser cargados a una tabla de Redshift. Los manifiestos son útiles cuando se trabaja con grandes volúmenes de datos distribuidos en múltiples archivos o carpetas. #### **Ventajas del Uso de Manifiestos** 1. **Control de Archivos**: Garantiza que solo se carguen los archivos especificados. 2. **Evita Duplicados**: Previene la carga de archivos no deseados. 3. **Manejo de Errores**: Define si la carga debe fallar si un archivo específico no está disponible. #### **Formato del Archivo de Manifiesto** Un manifiesto típico tiene la siguiente estructura: { "entries": \[ {"url": "s3://my-bucket/data/file1.gz", "mandatory": true}, {"url": "s3://my-bucket/data/file2.gz", "mandatory": false} ] } * `url`: Ruta del archivo en S3. * `mandatory`: Define si el proceso debe fallar si el archivo no está disponible (`true`) o continuar (`false`). #### **Uso en el Comando COPY** El manifiesto se especifica con la opción `MANIFEST` en el comando `COPY`: COPY table\_name FROM 's3://my-bucket/path-to-manifest/manifest.json' CREDENTIALS 'aws\_iam\_role=arn:aws:iam::123456789012:role/MyRole' REGION 'us-west-2' MANIFEST; ### **COMPUPDATE: Compresión Automática** La opción **COMPUPDATE** del comando `COPY` permite que Redshift analice automáticamente los datos cargados y aplique algoritmos de compresión óptimos a las columnas de la tabla. #### **Modos de COMPUPDATE** * `COMPUPDATE ON` **(por defecto):** Redshift ajusta las columnas para usar el mejor algoritmo de compresión basado en los datos cargados. * `COMPUPDATE OFF`**:** Desactiva el ajuste de compresión durante la carga. Útil si las columnas ya tienen compresión definida. * `COMPUPDATE PRESET`**:** Aplica configuraciones de compresión preexistentes, sin analizar los datos. #### **Beneficios de COMPUPDATE** 1. **Optimización Automática**: Reduce el espacio de almacenamiento utilizado. 2. **Mejora el Desempeño**: Las consultas son más rápidas en tablas comprimidas. 3. **Facilidad de Uso**: Redshift maneja la elección de algoritmos sin intervención manual. ### **Ejemplo Completo: Manifiestos y COMPUPDATE** Supongamos que tenemos datos en múltiples archivos comprimidos en S3, listados en un manifiesto. Para cargarlos con compresión automática: #### **Archivo de Manifiesto (**`manifest.json`**)** { "entries": \[ {"url": "s3://my-bucket/sales-data/file1.csv.gz", "mandatory": true}, {"url": "s3://my-bucket/sales-data/file2.csv.gz", "mandatory": true} ] } #### **Comando COPY** COPY sales\_table FROM 's3://my-bucket/sales-data/manifest.json' CREDENTIALS 'aws\_iam\_role=arn:aws:iam::123456789012:role/MyRole' REGION 'us-west-2' MANIFEST COMPUPDATE ON GZIP; * `MANIFEST`: Utiliza el archivo de manifiesto. * `COMPUPDATE ON`: Redshift ajusta automáticamente la compresión. * `GZIP`: Indica que los archivos están comprimidos en formato GZIP. ### **Buenas Prácticas** 1. **Preanalizar Compresión**: Antes de cargar datos, utiliza `ANALYZE COMPRESSION` para determinar los algoritmos de compresión óptimos:ANALYZE COMPRESSION table\_name; 2. **Usar Manifiestos para Archivos Grandes**: Divide los datos en archivos más pequeños y utiliza un manifiesto para manejarlos eficientemente. 3. **Desactivar COMPUPDATE en Tablas Optimizadas**: Si la tabla ya está configurada con compresión óptima, desactiva `COMPUPDATE` para ahorrar tiempo. 4. **Monitorizar Cargas**: Revisa tablas de sistema como `stl_load_commits` y `stl_load_errors` para verificar el estado de las cargas. 5. **Asegurar Permisos en S3**: Confirma que los roles de IAM tienen acceso a los archivos especificados en el manifiesto. ### **Resumen** * **Manifiestos**: Ayudan a controlar la carga de datos desde múltiples archivos en S3. * **COMPUPDATE**: Optimiza automáticamente la compresión de columnas durante la carga. * **Combinación Poderosa**: Usar ambos en conjunto asegura cargas eficientes y tablas optimizadas para consultas rápidas. Implementar estas herramientas en tu flujo de trabajo mejora significativamente la eficiencia y el desempeño en Amazon Redshift. 🚀

Con COPY también puedes especificar a que columnas de tu tabla quieres que se carguen los registro, es muy útil en el día a día.

Herramienta muy poderosa…