Curso
Tutorial de copos de nieve para principiantes: De la arquitectura a la ejecución de bases de datos
¿Qué es Copo de Nieve?
Si alguien me pidiera que describiera a Copo de Nieve con el menor número de palabras posible, elegiría éstas:
- Almacenes de datos
- Datos a gran escala
- Nube múltiple
- Separación
- Escalable
- Flexible
- Simple
Si querían que me explayara, encadenaba las palabras así:
Snowflake es una plataforma de gestión de almacenes de datos basada en la nube muy popular. Destaca entre sus competidores por su capacidad para manejar datos y cargas de trabajo a gran escala con mayor rapidez y eficacia. Su rendimiento superior procede de su arquitectura única, que utiliza capas separadas de almacenamiento y cálculo, lo que le permite ser increíblemente flexible y escalable. Además, se integra de forma nativa con múltiples proveedores de la nube. A pesar de estas funciones avanzadas, sigue siendo sencillo de aprender y aplicar.
Si piden aún más detalles, bueno, entonces escribiría este tutorial. Si eres totalmente nuevo en el tema, el curso Introducción a Snowflake de DataCamp es un excelente punto de partida.
¿Por qué utilizar Snowflake?
Snowflake da servicio a más de 8900 clientes en todo el mundo y procesa 3.900 millones de consultas cada día. Ese tipo de estadísticas de uso no es una coincidencia ni mucho menos.
A continuación te indicamos las mejores ventajas de Copo de Nieve que tienen tanto atractivo:
1. Arquitectura basada en la nube
Snowflake opera en las nubes, lo que permite a las empresas ampliar y reducir recursos en función de la demanda sin preocuparse de la infraestructura física (hardware). La plataforma también se encarga de las tareas rutinarias de mantenimiento, como las actualizaciones de software, la gestión del hardware y el ajuste del rendimiento. Esto alivia la carga de los gastos generales de mantenimiento, permitiendo a las organizaciones centrarse en lo que importa: obtener valor de los datos.
2. Elasticidad y escalabilidad
Snowflake separa las capas de almacenamiento y computación, permitiendo a los usuarios escalar sus recursos informáticos independientemente de sus necesidades de almacenamiento. Esta elasticidad permite gestionar eficazmente diversas cargas de trabajo con un rendimiento óptimo y sin costes innecesarios.
3. Concurrencia y rendimiento
Snowflake maneja fácilmente la alta concurrencia: varios usuarios pueden acceder a los datos y consultarlos sin pérdida de rendimiento.
4. Compartir datos
Las garantías de seguridad de Snowflake permiten compartir datos con otras organizaciones, departamentos internos, socios externos, clientes u otras partes interesadas. No necesitas complejas transferencias de datos.
5. Viaje en el tiempo
Snowflake utiliza un término elegante "Viaje en el tiempo" para el versionado de datos. Cada vez que se realiza un cambio en la base de datos, Snowflake toma una instantánea. Esto permite a los usuarios acceder a datos históricos en distintos momentos.
6. Rentabilidad
Snowflake ofrece un modelo de pago por uso gracias a su capacidad para escalar los recursos dinámicamente. Sólo pagarás por lo que utilices.
Todas estas ventajas combinadas hacen de Snowflake una herramienta de gestión de almacenes de datos muy deseable.
Ahora, echemos un vistazo a la arquitectura subyacente de Snowflake que desbloquea estas funciones.
Conviértete en Ingeniero de Datos
¿Qué es un almacén de datos?
Antes de sumergirnos en la arquitectura de Snowflake, revisemos los almacenes de datos para asegurarnos de que todos estamos en la misma página.
Un almacén de datos es un depósito centralizado que almacena grandes cantidades de datos estructurados y organizados procedentes de diversas fuentes para una empresa. Diferentes personas (empleados) de las organizaciones utilizan los datos que contienen para obtener diferentes perspectivas.
Por ejemplo, los analistas de datos, en colaboración con el equipo de marketing, pueden realizar una prueba A/B para una nueva campaña de marketing utilizando la tabla de ventas. Los especialistas en RRHH pueden consultar la información del empleado para hacer un seguimiento de su rendimiento.
Estos son algunos de los ejemplos de cómo las empresas de todo el mundo utilizan los almacenes de datos para impulsar el crecimiento. Pero sin una implantación y gestión adecuadas mediante herramientas como Snowflake, los almacenes de datos siguen siendo conceptos elaborados.
Puedes aprender más sobre el tema con nuestro curso de Almacenamiento de Datos .
Arquitectura en copo de nieve
La arquitectura única de Snowflake, diseñada para consultas analíticas más rápidas, proviene de su separación de las capas de almacenamiento y computación. Esta distinción contribuye a los beneficios que hemos mencionado antes.
Capa de almacenamiento
En Snowflake, la capa de almacenamiento es un componente crítico, que almacena los datos de forma eficiente y escalable. He aquí algunas características clave de esta capa:
- En la nube: Snowflake se integra perfectamente con los principales proveedores de la nube, como AWS, GCP y Microsoft Azure.
- Formato columnar: Snowflake almacena los datos en un formato columnar, optimizado para las consultas analíticas. A diferencia de los formatos tradicionales basados en filas que utilizan herramientas como Postgres, el formato columnar es muy adecuado para la agregación de datos. En el almacenamiento columnar, las consultas sólo acceden a las columnas concretas que necesitan, por lo que es más eficiente. Por otra parte, los formatos basados en filas requieren acceder a todas las filas de la memoria para operaciones sencillas como calcular promedios.
- Micropartición: Snowflake utiliza una técnica llamada micropartición que almacena las tablas en memoria en pequeños trozos. Cada trozo suele ser inmutable y de sólo unos megabytes de tamaño, lo que hace que la optimización y ejecución de las consultas sea mucho más rápida.
- Clonación de copia cero: Snowflake tiene una característica única que le permite crear clones virtuales de datos. La clonación es instantánea y no consume memoria adicional hasta que se realizan cambios en la nueva copia.
- Escala y elasticidad: La capa de almacenamiento escala horizontalmente, lo que significa que puede manejar volúmenes de datos crecientes añadiendo más servidores para distribuir la carga. Además, este escalado se produce independientemente de los recursos informáticos, lo que es ideal cuando deseas almacenar grandes volúmenes de datos pero analizar sólo una pequeña fracción.
Veamos ahora la capa de cálculo.
Capa de cálculo
Como su nombre indica, la capa de cálculo es el motor que ejecuta tus consultas. Trabaja conjuntamente con la capa de almacenamiento para procesar los datos y realizar diversas tareas computacionales. A continuación encontrarás más detalles sobre el funcionamiento de esta capa:
- Almacenes virtuales: Puedes pensar en los Almacenes Virtuales como equipos de ordenadores (nodos de cálculo) diseñados para gestionar el procesamiento de consultas. Cada miembro del equipo se encarga de una parte diferente de la consulta, lo que hace que la ejecución sea impresionantemente rápida y paralela. Snowflake ofrece Almacenes Virtuales de distintos tamaños y, por consiguiente, a distintos precios (los tamaños incluyen XS, S, M, L, XL).
- Arquitectura multiclúster y multinodo: La capa de cálculo utiliza varios clusters con múltiples nodos para una alta concurrencia, permitiendo que varios usuarios accedan a los datos y los consulten simultáneamente.
- Optimización automática de consultas: El sistema Snowflake analiza todas las consultas e identifica patrones para optimizar utilizando datos históricos. Las optimizaciones habituales incluyen la poda de datos innecesarios, el uso de metadatos y la elección de la ruta de ejecución más eficiente.
- Caché de resultados: La capa de cálculo incluye una caché que almacena los resultados de las consultas ejecutadas con frecuencia. Cuando se vuelve a ejecutar la misma consulta, los resultados se devuelven casi instantáneamente.
Todos estos principios de diseño de la capa de cálculo contribuyen a la capacidad de Snowflake para gestionar cargas de trabajo diferentes y exigentes en la nube.
Capa de servicios en la nube
La última capa son los servicios en la nube. Como esta capa se integra en todos los componentes de la arquitectura de Snowflake, hay muchos detalles sobre su funcionamiento. Además de las funciones relacionadas con otras capas, tiene las siguientes responsabilidades adicionales:
- Seguridad y control de acceso: Esta capa aplica medidas de seguridad, como la autenticación, la autorización y la encriptación. Los administradores utilizan el Control de Acceso Basado en Funciones (RBAC) para definir y gestionar las funciones y permisos de los usuarios.
- Compartir datos: Esta capa implementa protocolos seguros de intercambio de datos entre diferentes cuentas e incluso organizaciones de terceros. Los consumidores de datos pueden acceder a ellos sin necesidad de moverlos, lo que fomenta la colaboración y la monetización de los datos.
- Soporte de datos semiestructurados: Otra ventaja exclusiva de Snowflake es su capacidad para manejar datos semiestructurados, como JSON y Parquet, a pesar de ser una plataforma de gestión de almacenes de datos. Puede consultar fácilmente datos semiestructurados e integrar los resultados con las tablas existentes. Esta flexibilidad no se ve en otras herramientas RDBMS.
Ahora que tenemos una imagen de alto nivel de la arquitectura de Snowflake, vamos a escribir algo de SQL en la plataforma.
Configurar SnowflakeSQL
Snowflake tiene su propia versión de SQL llamada SnowflakeSQL. La diferencia entre éste y otros dialectos de SQL es similar a la diferencia entre los acentos del inglés.
Muchas de las consultas analíticas que realizas en dialectos como PostgreSQL no cambian, pero hay algunas discrepancias en los comandos DDL (Lenguaje de Definición de Datos).
Snowflake proporciona dos interfaces para ejecutar SnowSQL:
- Snowsight: Una interfaz web para interactuar con la plataforma.
- SnowSQL: Un cliente CLI (Interfaz de Línea de Comandos) para gestionar y consultar bases de datos.
Veremos cómo configurar ambos y realizar algunas consultas.
Snowsight: Interfaz web
Para empezar con Snowsight, ve a la página principal de Snowflake y selecciona "Empezar gratis". Introduce tus datos personales y selecciona cualquier proveedor de la nube de la lista. La elección no importa realmente, ya que la prueba gratuita incluye créditos por valor de 400 $ para cualquiera de las opciones (no se te pedirá que configures tú mismo las credenciales en la nube).
Tras verificar tu correo electrónico, serás redirigido a la página Hojas de trabajo. Las hojas de trabajo son entornos interactivos de codificación en vivo en los que puedes escribir, ejecutar y ver los resultados de tus consultas SQL.
Para realizar algunas consultas, necesitamos una base de datos y una tabla (no utilizaremos los datos de ejemplo de Snowsight). El siguiente GIF muestra cómo puedes crear una nueva base de datos llamada "prueba_db" y una tabla llamada "diamantes" utilizando un archivo CSV local. Puedes descargar el archivo CSV ejecutando el código de este gist de GitHub en tu terminal.
En el GIF, Snowsight nos informa de que hay un problema con uno de los nombres de columna. Como la palabra "tabla" es una palabra clave reservada, la he encerrado entre comillas dobles.
Después, se te dirigirá a una nueva hoja de cálculo donde podrás ejecutar cualquier consulta SQL que desees. Como se muestra en el GIF, la interfaz de la hoja de cálculo es bastante sencilla y muy funcional. Tómate unos minutos para familiarizarte con los paneles, los botones y sus respectivas ubicaciones.
SnowSQL: CLI
Nada iguala la emoción de gestionar y consultar una base de datos completa desde tu terminal. ¡Por eso existe SnowSQL!
Sin embargo, para ponerlo en marcha, hay que seguir algunos pasos, lo que suele ser un proceso más lento que empezar con Snowsight.
Como primer paso, descarga el instalador de SnowSQL de la página de descargas para desarrolladores de Snowflake. Descarga el archivo correspondiente. Como estoy utilizando WSL2, elegiré una versión para Linux:
En el terminal, descargo el archivo utilizando el enlace copiado y lo ejecuto con bash
:
$ curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.31-linux_x86_64.bash
$ bash snowsql-1.2.31-linux_x86_64.bash
Para otras plataformas, puedes seguir los pasos de instalación de esta página de documentación de Snowflake.
Una vez instalado correctamente, deberías recibir el siguiente mensaje:
Nota: En los sistemas tipo Unix, es importante asegurarse de que el comando snowsql
está disponible en todas las sesiones de terminal. Para ello, debes añadir el directorio /home/username/bin
a tu variable $PATH. Puedes hacerlo añadiendo la siguiente línea a tus archivos .bashrc
, .bash_profile
o .zshrc
: export PATH=/home/yourusername/bin:$PATH
. Recuerda sustituir yourusername
por tu nombre de usuario real.
El mensaje nos pide que configuremos los ajustes de la cuenta para conectarnos a Snowflake. Hay dos formas de hacerlo:
- Pasa los datos de la cuenta interactivamente en el terminal.
- Configura las credenciales en un archivo de configuración global de Snowflake.
Como es más permanente y seguro, procederemos con la segunda opción. Para obtener instrucciones específicas de la plataforma, lee la página Conectarse a través de SnowSQL de la documentación. Las siguientes instrucciones son para sistemas tipo Unix.
En primer lugar, ve a tu dirección de correo electrónico y busca el correo de bienvenida de Snowflake. Contiene el nombre de tu cuenta dentro del enlace de inicio de sesión: account-name.snowflakecomputing.com
. Cópialo.
A continuación, abre el archivo ~/.snowsql/config
con un editor de texto como VIM o VSCode. En la sección connections
, descomenta los tres campos siguientes:
- Nombre de la cuenta
- Nombre de usuario
- Contraseña
Sustituye los valores por defecto por el nombre de cuenta que copiaste y el nombre de usuario y contraseña que proporcionaste al registrarte. Una vez hecho esto, guarda y cierra el archivo.
Después, vuelve a tu terminal e introduce snowsql
. El cliente debería conectarse automáticamente y ofrecerte un editor SQL que incluya funciones como resaltado de código y completado de tabulaciones. Este es el aspecto que debe tener:
Conectarse a una base de datos existente en SnowSQL
Ahora mismo, no estamos conectados a ninguna base de datos. Vamos a solucionarlo conectándonos a la base de datos test_db
que hemos creado con Snowsight. Primero, comprueba las bases de datos disponibles con SHOW DATABASES
:
$ SHOW DATABASES
$ USE DATABASE TEST_DB
A continuación, especifica que a partir de ahora utilizarás la base de datos test_db
(sin distinguir mayúsculas de minúsculas). A continuación, puedes ejecutar cualquier consulta SQL en las tablas de la base de datos conectada.
$ SELECT COUNT(*) FROM DIAMONDS
Crear una base de datos y una tabla nuevas en SnowSQL
Si formas parte de una gran organización, puede darse el caso de que la responsabilidad de crear una base de datos y poblarla con los datos existentes recaiga sobre tus hombros. Para practicar en ese escenario, vamos a intentar cargar el conjunto de datos Diamonds como una tabla en SnowSQL dentro de una nueva base de datos. Estos son los pasos que puedes seguir:
1. Crea una nueva base de datos:
CREATE DATABASE IF NOT EXISTS new_db;
2. Utiliza la base de datos:
USE DATABASE new_db;
3. Crea un formato de archivo para CSV:
CREATE OR REPLACE FILE FORMAT my_csv_format -- Can be named anything
TYPE = CSV
FIELD_DELIMITER = ','
SKIP_HEADER = 1; -- Assuming the first row is a header
Debemos definir manualmente un formato de archivo y darle un nombre, porque Snowflake no puede deducir el esquema y la estructura de archivos de datos como CSV, JSON o XML. El formato de archivo que definimos anteriormente es adecuado para el archivo diamonds.csv
que tenemos (está separado por comas e incluye una cabecera).
4. Crea un escenario interno:
CREATE OR REPLACE STAGE my_local_files;
Un escenario en Snowflake es un área de almacenamiento donde puedes subir tus archivos locales. Pueden ser ficheros de datos estructurados y semiestructurados. Arriba, estamos creando un escenario llamado my_local_files
.
5. Introduce el archivo CSV en el escenario:
PUT file:///home/bexgboost/diamonds.csv @my_local_files;
6. Crea la tabla:
CREATE TABLE diamonds (
carat FLOAT,
cut VARCHAR(255),
color VARCHAR(255),
clarity VARCHAR(255),
depth FLOAT,
table FLOAT,
price INTEGER,
x FLOAT,
y FLOAT,
z FLOAT
);
7. Carga los datos de la etapa en la tabla:
COPY INTO diamonds
FROM @my_local_files/diamonds.csv
FILE_FORMAT = my_csv_format;
8. Verifícalo:
SELECT COUNT(*) FROM diamonds;
Estos pasos crearán una nueva base de datos Snowflake, definirán un formato de archivo CSV, crearán un escenario para almacenar archivos locales, cargarán un archivo CSV en el escenario, crearán una nueva tabla, cargarán los datos CSV en la tabla y, por último, verificarán la operación contando el número de filas de la tabla.
Si el resultado devuelve el recuento de filas, enhorabuena, has creado con éxito una base de datos y has cargado en ella datos locales con SnowSQL. Ahora puedes consultar la tabla como quieras.
Conclusión y aprendizaje posterior
¡Uf! Empezamos con algunos conceptos sencillos, pero hacia el final, nos metimos de lleno en los detalles escabrosos. Bueno, esa es mi idea de un tutorial decente.
Probablemente habrás adivinado que Snowflake es mucho más de lo que hemos cubierto. De hecho, ¡la documentación de Snowflake incluye guías de inicio rápido que en realidad duran 128 minutos! Pero antes de abordarlas, te recomiendo que te mojes las manos con otros recursos. ¿Qué te parecen éstas?
- Curso de Introducción a Snowflake
- Un seminario web sobre la modernización de la analítica de ventas con Snowflake
- Análisis de datos en Snowflake con código Python
- Guías de usuario oficiales de Snowflake
- Recursos para desarrolladores Snowflake
¡Gracias por leer!
Certifícate en el puesto de Ingeniero de Datos de tus sueños
Nuestros programas de certificación te ayudan a destacar y a demostrar que tus aptitudes están preparadas para el trabajo a posibles empleadores.


Soy un creador de contenidos de ciencia de datos con más de 2 años de experiencia y uno de los mayores seguidores en Medium. Me gusta escribir artículos detallados sobre IA y ML con un estilo un poco sarcastıc, porque hay que hacer algo para que sean un poco menos aburridos. He publicado más de 130 artículos y un curso DataCamp, y estoy preparando otro. Mi contenido ha sido visto por más de 5 millones de ojos, 20.000 de los cuales se convirtieron en seguidores tanto en Medium como en LinkedIn.
¡Comienza hoy tu viaje a la base de datos!
Curso
Data Modeling in Power BI
Curso
Introduction to NoSQL
blog
Las 32 mejores preguntas y respuestas de la entrevista sobre Snowflake para 2024

Nisha Arya Ahmed
15 min
Tutorial
Base de datos Azure SQL: Configuración y gestión paso a paso

Anneleen Rummens
12 min
Tutorial
Tutorial de Power BI para principiantes

DataCamp Team
13 min
Tutorial
Sinapsis Azure: Guía paso a paso para principiantes
Tutorial
Tutorial de GitHub y Git para principiantes
Tutorial
Primeros pasos con AWS Athena: Guía práctica para principiantes

Tim Lu
15 min