Dicho rápido Snowflake es un data warehouse analítico en la nube (SaaS) que permite elegir con qué proveedor de servicios trabajar por debajo. La diferencia es que no está basado en las soluciones comunes de Big Data, como podría ser hadoop, sino que han generado su propio motor SQL específicamente pensando en la nube.

Esto lo asimila a herramientas existentes en las diferentes plataformas como podrían ser BigQuery en Google Cloud Platform, Redshift en AWS y Synapse en Azure; pero vamos a ver en detalle Snowflake y las opciones diferenciales que nos brinda.

Principales características

Arquitectura

Utiliza un repositorio de datos centralizado para datos persistentes que es accesible desde todos los nodos del data warehouse, pero a la hora de procesar las consultas cada cluster guarda una parte de esos datos localmente para su procesamiento en paralelo.

Hay tres capas principales: Database storage, Query processing y Cloud services.

  1. Database storage

La capa en la que se encuentran los datos. Una vez que estos suben a la nube, Snowflake se encarga de reorganizarlos en su propio formato. Con esto consigue gestionar la organización, tamaño de fichero, estructura, compresión, metadatos, etc. para mejorar el rendimiento. Como contrapartida, estos datos solamente pueden ser consultados mediante consultas SQL a través de Snowflake.

  1. Query processing

Las consultas son realizadas por esta capa utilizando “almacenes virtuales”. Cada “almacén” es un cluster compuesto de múltiples nodos para el trabajo en paralelo, los cuales Snowflake se encarga de gestionar en el proveedor de servicios que hayamos elegido.

  1. Cloud services

Es un conjunto de servicios que se encargan de coordinar las actividades de Snowflake, desde el login hasta organizar las consultas de los usuarios. Estos servicios también corren sobre instancias en el proveedor de servicios elegido, y también están gestionadas por Snowflake.

Posibilidades para interactuar con Snowflake

Actualmente podemos utilizar Snowflake desde:

Proveedores soportados

Ahora mismo cuando te registras en Snowflake, te da la posibilidad de elegir entre tres proveedores de servicios: AWS, GCP y Azure.

Dentro de cada servicio, también tenemos la posibilidad de elegir la región en la que queremos trabajar.

Una cosa a tener en cuenta a la hora de elegir el servicio es que el coste del mismo varía en función del proveedor y de la región elegida, por lo que además de requisitos legales como la GDPR tendremos que tener en cuenta esto a la hora de elegir proveedor y región para nuestros datos.

Un gran ecosistema

Como se puede observar en la siguiente imagen, se ha generado un buen ecosistema de integraciones alrededor del servicio que presta Snowflake, teniendo integraciones con las principales herramientas de visualización, ETL, ML, Data Science, etc.

Estas integraciones permiten entre otras cosas que en el caso de que tengamos una gran cantidad de datos en la nube y solamente queramos consultar una pequeña parte, se pueden generar consultas a “tablas externas” directamente a los ficheros en la nube.

Carga de datos

La carga de datos debe realizarse desde lo que llaman fuentes internas, otras cuentas de Snowflake o fuentes externas, es decir S3, Cloud Storage o Azure Blobs Storage; y la tienen organizada de manera que puedes realizarla por lotes o de manera continua.

Dependiendo del volumen de datos convendrá realizar una u otra, puesto que hay ciertas diferencias, y además puede haber costes por transferencia de datos.

Carga por lotesCarga continua (Snowpipe)
Datos previamente en la nubePequeños volúmenes de datos e incremental
Necesidad de aprovisionamiento de DWH por parte del usuarioTotalmente autogestionado
Capacidades de transformación de datos simplesCapacidades de transformación de datos algo más complejas

Peculiaridades del servicio

Además soporta la mayoría de formatos más comunes, con ciertas particularidades, por ejemplo, el formato delimitado (CSV, TSV, etc.) es el único que puede utilizar otro tipo de codificación que no sea UTF-8, pero hay que especificar explícitamente cuál es y tiene que estar soportado en esta lista.

En principio si no se trata de ficheros comprimidos, él solo se encarga de comprimir a gzip.

También soporta cifrado de los archivos. En caso de que no estén cifrados, se cifran al subirlos; y si ya están cifrados, hay que proporcionarle la clave. Como nota a tener en cuenta: para escribir el post estuvimos haciendo pruebas de subida de ficheros desde la interfaz gráfica y nos dimos cuenta que si cambiabas la pestaña del navegador se pausaba el cifrado de los datos previo a la subida.

Descarga de datos

Para finalizar esta introducción a Snowflake comentar también que las opciones de descarga de datos pasan por consultar las tablas dentro de Snowflake y guardarlas mediante el comando COPY INTO, donde location puede ser uno o varios ficheros dentro del servicio de almacenamiento del proveedor seleccionado para poder descargarlo desde ahí. Junto con el comando anterior, se puede utilizar SELECT por lo que no solo se pueden almacenar las tablas tal y como están en Snowflake, si no que también se puede descargar consultas para análisis específicos.

TL;DR

Snowflake es una herramienta muy interesante a la hora de montar un data warehouse en la nube ya que elimina en cierta medida el vendor locking permitiendo utilizar cualquiera de las nubes con las que trabaja (AWS, GCP, Azure), disminuye y facilita las tareas de gestión de los datos con el sistema de puesta en marcha de data warehouses virtuales en cuestión de segundos para las diferentes necesidades que puedan tener los equipos que accedan a los datos, democratiza mucho el acceso a los datos al poder utilizar SQL para las consultas y, como punto final, destacar la cantidad de conectores y herramientas desde las que se puede acceder al servicio.

En otros post futuros profundizaremos en las capacidades que nos brinda el mercado de datos que es accesible desde Snowflake y otras opciones que nos ofrece la herramienta.

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete