Introducción a Amazon Redshift

Última actualización: 29/07/2023

En esta introducción al servicio Amazon Redshift aprenderás cómo te puede resultar útil en tu estrategia de datos en la nube. Repasaremos su funcionamiento, sus ventajas, su arquitectura y particularidades para que puedas empezar a usarlo de manera adecuada en tus proyectos big data.

Amazon Redshift: Introducción

¿Qué es Redshift?

Amazon Redshift es el servicio de Data Warehouse en la nube disponible en AWS que nos permite realizar consultas analíticas en SQL para big data de manera eficiente.

Es una base de datos MPP (Procesamiento paralelo masivo) que analiza datos usando múltiples nodos en paralelo. Cada uno de estos nodos se encarga de ejecutar un subconjunto de la consulta sobre los datos.

Nos proporciona las funcionalidades necesarias para implementar las consultas de alto rendimiento que alimenten procesos de BI, analítica en tiempo real y entrenamiento de modelos de machine learning con SQL.

Ventajas como Data Warehouse

AWS Amazon Web Services Logo

Redshift es uno de los cloud data warehouses más populares. Aporta una gran potencia analítica de forma flexible y muy fácil de usar, integrado completamente con otros servicios del ecosistema de AWS como Amazon S3 o AWS Glue.

La configuración y la gestión de algunas actividades como la replicación, el backup y las actualizaciones son automáticas. Muchas tareas administrativas también se pueden automatizar a través de scripts. Redshift ofrece APIs con las que se puede interactuar a través de llamadas o de la consola de AWS, por ejemplo, para escalar el clúster de manera programática. También es compatible con Terraform como herramienta para automatizar los despliegues.

Redshift tiene un coste flexible, por lo que se paga por lo que se usa. Existen dos modelos: bajo demanda y el uso de instancias reservadas. De esta forma ofrece varias opciones para ajustarse a los requisitos de cada usuario.

Permite definir colas para diferentes tipos de procesos mediante Redshift Workload Management (WLM). Esta funcionalidad es muy útil para separar los procesos ETL y las consultas analíticas de reporting. También, se puede limitar el número de consultas concurrentes. Es importante asegurar que los procesos ETL son eficientes para obtener los mejores resultados al añadir datos de manera consistente y segura.

Arquitectura

A continuación describiré los elementos que forman parte de la arquitectura de un clúster de Amazon Redshift.

Nodo Líder: Este nodo sirve de punto de entrada al clúster y gestiona las comunicaciones con las aplicaciones cliente. El resto de nodos de cómputo son transparentes para estas aplicaciones externas. Se encarga de desarrollar el plan de ejecución de las consultas y de distribuirlas a los nodos de cómputo, de forma que asigna a cada uno la porción de los datos que reside en ellos. Las consultas que no referencian tablas almacenadas en los nodos de cómputo ejecutan en el nodo líder directamente.

Nodos de cómputo: Estos nodos ejecutan el fragmento de consulta que les ha asignado el nodo líder. Cuando han terminado sus operaciones, devuelven los resultados intermedios al líder para que pueda devolver el resultado total al cliente. Estos nodos particionan sus recursos computacionales (memoria y disco) en slices.

Slices: Son las particiones de los nodos de cómputo. Ejecutan las operaciones en paralelo para acelerar el procesamiento. El número de slices de cada nodo viene determinado por la capacidad y el tipo de nodo de cómputo del clúster. Es importante elegir bien la forma de distribuir las tablas mediante claves, de forma que las filas se distribuyan de manera repartida en los slices disponibles.

Arquitectura Redshift AWS
Arquitectura de Redshift

Redshift está limitado a 100 nodos y 16TB de almacenamiento por nodo (Sin usar Redshift Spectrum), por lo que sí tiene un límite en la capacidad de almacenar datos. Aunque no separa completamente el cómputo del almacenamiento, sí que consigue alcanzar unos precios de almacenamiento muy baratos.

Redshift Spectrum vs Athena

Redshift Spectrum es una de las funcionalidades de Redshift más potentes. Permite obtener una escalabilidad ilimitada de cómputo sin añadir nuevos nodos al clúster. Para ello, gestiona consultas SQL directamente sobre S3, por lo que no necesita copiar los datos en el clúster y evita las limitaciones de escalabilidad que hemos visto.

Amazon Athena también permite realizar consultas SQL interactivas directamente sobre el almacenamiento de objetos en S3 mediante un servicio serverless. Athena solo permite crear tablas externas, por lo que el acceso a s3 es de solo lectura mediante ANSI SQL. Como vemos, Athena y Redshift Spectrum no almacenan datos, sino que usan Spark para procesar los datos del Data Lake.

Ambos servicios basan su coste en la cantidad de datos accedidos, y es el mismo por cara TB de datos escaneado.

Athena está basado en Presto, tiene UDFs para aplicar funciones y consultar columnas y se integra con AWS Glue como catálogo de datos y con AWS Lake Formation para administrar los permisos en las tablas y columnas. Con este servicio no tienes que preocuparte de tener suficientes recursos computacionales ya que es totalmente gestionado. También, proporciona conectores open source para federar consultas SQL en servicios como DynamoDB, Apache HBase, Amazon DocumentDB, Redshift, AWS CloudWatch Metrics y bases de datos compatibles con JDBC como MySQL y PostgreSQL.

Redshift Spectrum es parte del stack de Redshift, y nos permite tener un control más fino del rendimiento al estar ligado a un clúster. En el caso de que no necesites el data warehouse y simplemente quieras analizar tus datos en S3, Athena es, por tanto, un servicio más adecuado.

Alternativas a Redshift

Como alternativas a Redshift deberemos considerar Azure Synapse Analytics y Snowflake. Synapse Analytics nos aporta la alternativa en el ecosistema de Microsoft Azure mientras que Snowflake es una alternativa agnóstica a cloud.

Redshift vs Snowflake

Snowflake es una plataforma de datos tipo SaaS disponible para cualquier proveedor cloud, como AWS, Azure y GCP, es agnóstica a la nube. Mientras que Snowflake es un servicio SaaS, Redshift es una solución PaaS (Platform-as-a-Service) y es un servicio nativo de AWS construido para funcionar junto a otras tecnologías de AWS. Es un eje central para conectar otros servicios de AWS pero debe ser mantenido y administrado más activamente que Snowflake. Snowflake usa ANSI SQL mientras que las consultas en Redshift se realizan a través del SQL de PostgreSQL.

En cuanto a la arquitectura, Snowflake desacopla las capas de almacenamiento y de procesamiento, lo que facilita la escalabilidad. Redshift ofrece una función desacoplada a través de sus nodos RA3 pero más limitada. A diferencia que en Snowflake, el autoescalado en Redshift puede llevar mucho tiempo al tener que disponibilizar o eliminar nodos.

Snowflake también aporta la funcionalidad de time travel en el aspecto de protección de datos, aplicable a tablas, esquemas y bases de datos de hasta 90 días. el time travel hace referencia a la capacidad de la base de datos de ofrecer acceso a datos históricos o versiones anteriores de los datos. Esto es muy útil para restaurar elementos eliminados y analizar las manipulaciones que se han realizado.

Redshift usa snapshots como mecanismo de protección de datos, que son puntos temporales que actúan como backup. Los snapshots pueden generarse de forma automática o manual.

Como conclusión, la principal ventaja de Redshift frente a Snowflake es su integración con los servicios de AWS. Snowflake es una solución más completa que puede aportar valor al negocio más rápidamente. Sin embargo, debemos evaluar el coste a largo plazo, ya que es probable que sea más elevado que el coste de Redshift.

Ejemplo de Redshift con Python

A continuación se muestra un ejemplo de cómo utilizar Amazon Redshift con Python:

# Importar las librerías necesarias
import boto3
import psycopg2

# Creater un cliente de Redshift
redshift = boto3.client('redshift')

# Crear una conexión al cluster de Redshift
conn = psycopg2.connect(
    host='mycluster.abcdef123456.us-east-1.redshift.amazonaws.com',
    user='myuser',
    password='mypassword',
    port=5439,
    database='mydatabase')

# Crear un cursos para ejecutar consultas SQL
cur = conn.cursor()

# Ejecutar una consulta SQL sobre la tabla mytable
cur.execute('SELECT * FROM mytable')

# Recuperar los resultados de la consulta
results = cur.fetchall()

# Mostrar los resultados
print(results)

# Cerrar el cursor y la conexión
cur.close()
conn.close()

En este ejemplo se importan las librerías de AWS necesarias y se crea un cliente de AWS Redshift. Luego se establece una conexión al cluster de Redshift y se crea un cursor para ejecutar consultas SQL. Después se imprimen los resultados de la consulta. Por último, se cierran el cursor y la conexión.

Cursos de Redshift y Siguientes Pasos

Aquí tienes dos cursos de Udemy que te recomiendo hacer para profundizar algo más en Redshift. Aprenderás todo lo que necesitas para usar este servicio de manera profesional:

Paso 1:

Desarrollo y administración de Amazon Redshift

Desarrollo y administración de Amazon Redshift

Este curso te permitirá aprender todos los conceptos que necesitarás para desarrollar con Amazon Redshift y administrarlo de forma correcta. Está actualizado este año y explica todas las funcionalidades actuales de la plataforma.

Paso 2:

Práctica con Amazon Redshift

Con el curso práctico aprenderás a usar Redshift mediante ejercicios y ejemplos. Incluye conceptos sobre carga de datos, configuración y distribución de carga en el clúster.

Preguntas Frecuentes Redshift – FAQ

¿Redshift es una base de datos?

Redshift sí es una base de datos NoSQL columnar orientada a analítica y usada como Data Warehouse. Su capa de consulta usa el lenguaje SQL y es ofrecida como servicio en AWS.

¿Para qué se usa Redshift?

Los casos de uso más comunes de Redshift son alrededor del Data Warehouse empresarial. Permite implementar consultas muy rápidas que sirvan a procesos analíticos en tiempo real, business intelligence y machine learning.

¿Cuál es la diferencia entre Redshift y RDS?

Redshift y RDS son bases de datos como servicio en la nube de AWS. Amazon RDS se usa generalmente como base de datos tradicional OLTP con una estructura orientada a filas. Redshift usa una estructura columnar y está orientada a analítica y reporting como un Data Warehouse empresarial.

¿Cuál base de datos usa Redshift?

Amazon Redshift está basada en la base de datos relacional PostgreSQL.

Esta entrada tiene 2 comentarios

  1. Elena

    ¿Qué sería «time travel»?

    Lo mencionas aquí: «Snowflake también aporta la funcionalidad de time travel en el aspecto de protección de datos»

    Gracias de antemano, un saludo

    1. oscarfmdc

      Hola Elena, gracias por el comentario, he revisado el artículo especificando lo que significa time travel en las herramientas de datos. Básicamente es una manera de acceder a datos históricos o versiones anteriores. De esta forma se pueden analizar las manipulaciones que han ocurrido

Deja una respuesta