Como ya presentamos en el post ¿Qué es Snowflake?, Snowflake es una plataforma ofrecida en formato SaaS que proporciona un data-warehouse construido en la nube y que da la posibilidad al usuario de elegir sobre qué proveedor de servicios cloud (ya sea AWS, Azure o GCP) quiere que ésta se levante.

Snowflake está construido completamente sobre infraestructura en cloud y, por ello, todos sus componentes se ejecutan sobre una infraestructura de nube pública (a excepción de SnowSQL, su cliente de línea de comandos, el cual es opcional), lo que hace que no exista ningún software que instalar, configurar y/o administrar.

Además, como ya os contamos, su arquitectura está compuesta por 3 capas integradas entre sí de forma lógica pero que se encuentran físicamente separadas; un enfoque que permite combinar las ventajas de una arquitectura de disco compartido con el rendimiento y los beneficios de escalabilidad horizontal de una arquitectura distribuida. Estas tres capas las conforman:

Fuente: Snowflake
Fuente: Snowflake

Y aunque Snowflake admite varias formas de conectarse al servicio, en este post, os vamos a presentar su interfaz gráfica y algunas de sus principales características, utilizando para ello un pequeño conjunto de datos sobre reservas hoteleras (disponible en kaggle). Además, os enseñaremos cómo realizar y consumir de forma sencilla copias compartidas de datos utilizando la funcionalidad de Data-Sharing.

Conociendo Snowflake UI

Snowflake UI es una interfaz de usuario basada en web desde la que se puede acceder a todos los aspectos de gestión y uso de Snowflake.

Esta interfaz está dividida en un menú superior con las diferentes opciones bajo el cual se encuentra lo que podríamos llamar la ‘zona de trabajo’ y que varía en función de la opción que seleccionemos en el menú.

En lo que se refiere al menú las opciones que presenta difieren en función del rol con el que se interactúa, mostrando menos posibilidades cuanto menos permisos tenga el rol.

Snowflake UI - Ribbon menu
Snowflake UI - Ribbon menu

En la imagen anterior, os mostramos cuál es su apariencia y lo hacemos accediendo con el rol de ‘ACCOUNTADMIN’ por ser el que dispone de todas sus opciones (sin embargo, para el resto de roles su apariencia no varía, sino que únicamente algunas de las opciones desaparecen). Todas estas opciones son:

Snowflake Worksheets

De todas las opciones del menú superior, quizá la principal sea la relativa a los Worksheets, ya que desde ella nos es posible realizar casi todas las tareas (algunas de ellas relativas a otras opciones del menú) simplemente usando SQL. Entre estas tareas estarían:

Su apariencia es la siguiente y está dividida en 6 grandes bloques que hemos enumerado en la imagen:

Snowflake UI - Worksheets page
Snowflake UI - Worksheets page
  1. Navegador de objetos: el usuario puede explorar las bases de datos, esquemas, tablas y vistas que son accesibles por el rol utilizado para el worksheet; listado que se actualiza de forma automática cuando se cambia el contexto.
Snowflake UI - Worksheets page - Context menu
Snowflake UI - Worksheets page - Context menu
  1. Menú contextual: el usuario puede configurar el contexto de ejecución para el worksheet, ya que le permite seleccionar qué rol (siempre y cuando el usuario disponga de más de uno habilitado) y qué virtual warehouse utilizar pudiendo incluso modificar el tamaño del mismo con un simple click. Además, también podrá establecer cuál será el esquema y la base de datos a la que se enviarán las próximas consultas SQL.
  2. Editor de SQL: se escriben y ejecutan las instrucciones SQL.
  3. Panel de información sobre la tabla/vista seleccionada en el navegador de objetos: Donde el usuario podrá ver de forma rápida el número de registros que contiene la tabla/vista y el tamaño que ocupa, así como el listado de sus campos y el tipo de datos de cada uno de ellos.
  4. Panel de resultados: Donde el usuario podrá ver, además de los resultados devueltos por la consulta SQL, el número de registros que esa consulta devuelve y un resumen de la duración total de la misma sobre una pequeña una barra de estado; detalle que podrá ampliar posicionándose sobre dicha barra ya que aparecerá una ventana emergente que mostrará el desglose completo de la duración.
Snowflake UI - Worksheets page - Results pane
Snowflake UI - Worksheets page - Results pane
  1. Historial de las últimas sentencias SQL ejecutadas: Se trata de un breve resumen de las últimas 50 queries ejecutadas desde donde consultar aspectos como la duración o la sentencia ejecutada. Para obtener más detalles sobre cada una de ellas, bastará con seleccionar el link correspondiente a su query ‘Query ID’. Y en caso de querer consultar una mayor profundidad histórica, podremos acceder al histórico de los últimos 14 días seleccionando la opción ‘History’ del menú superior.

Mencionar, también, que Snowflake está preparando una modernización de su interfaz, la cual dispondrá de nuevas funcionalidades, entre las que se encuentra Snowsight, que será el reemplazo de las hojas de trabajo SQL (conocidas como Worksheets) y que está diseñado para el análisis de datos, permitiendo tanto la realización de consultas SQL sobre los datos como la representación gráfica de los resultados devueltos por estas.

Snowsight - Results tab
Snowsight - Results tab
Snowsight - Chart tab
Snowsight - Chart tab

Compartiendo datos con Snowflake Data-Sharing

A medida que el volumen de datos en las organizaciones continúa aumentando de forma exponencial, también lo hace su necesidad de intercambiar información; sin embargo, la forma tradicional de compartir datos es, en ocasiones, ineficiente, ya que implica tener que copiar, preparar y descargar los datos antes de enviarlos. Es por ello que, con la motivación de esta necesidad, cada vez es mayor la búsqueda de nuevas formas que permitan compartir datos a escala de forma segura.

Snowflake proporciona a las organizaciones la posibilidad de crear sus propios intercambios de datos para mejorar la colaboración a través de Data-Sharing; funcionalidad que permite intercambiar datos de forma segura, y a la cual puede accederse desde la pestaña Shares del menú.

Snowflake UI - Shares menu
Snowflake UI - Shares menu

Mediante esta funcionalidad, Snowflake permite compartir datos a través de recursos compartidos (llamados shares), que son creados por proveedores de datos e "importados" por consumidores de datos. Por tanto, una cuenta puede tener:

Con Data-Sharing no se copian ni transfieren datos reales entre cuentas, sino que el intercambio de datos se realiza a través de la capa de servicios y el almacén de metadatos únicos de Snowflake. Esto implica que:

Fuente: Snowflake
Fuente: Snowflake

Además, es importante señalar que el intercambio de datos solo se admite entre cuentas de Snowflake. Sin embargo, para facilitar el intercambio de datos con aquellos consumidores que aún no tienen una cuenta, Snowflake da la posibilidad a los proveedores de crear ‘reader accounts’ (cuentas de sólo lectura). Estas cuentas pertenecen a la cuenta del proveedor que las crea y proporcionan una forma rápida y fácil de compartir datos sin que el consumidor se convierta en cliente de Snowflake, aunque tienen la limitación de que únicamente pueden consumir datos de la cuenta del proveedor al que pertenecen.

Una vez explicado qué es Data-Sharing y cómo funciona, vamos a contaros cómo crear un outbound-share desde una cuenta proveedor y cómo consumir un inbound-share desde una cuenta consumidor:

Creación de un share

Consumo de un share

Como habréis podido ver, es una funcionalidad muy potente y que, además, es muy sencilla de realizar a través de la propia interfaz de la herramienta.

Conclusiones

Tras haber probado la plataforma, creemos que tiene un gran potencial, y el hecho de que sea en formato SaaS elimina la complejidad asociada a la administración y mantenimiento de la misma, lo que permite a los usuarios centrarse más en los datos. Además, como hemos mostrado, tiene una interfaz bastante sencilla e intuitiva, lo que facilita mucho trabajar con ella.

En lo que se refiere a la funcionalidad de Data-Sharing, creemos que es una de sus características más relevantes y le hace diferenciarse respecto a otras plataformas de data warehouse.

Para cualquier usuario, el hecho de poder intercambiar datos con tan solo unos clicks tiene una enorme utilidad pues simplifica el proceso de compartir datos y reduce tanto los tiempos como los costes asociados a esa operativa ya que no es necesario tener que copiar, preparar y descargar los datos antes de enviarlos. Asimismo, el consumo de datos compartidos es igual de sencillo, pues los datos compartidos están listos para consultarse sin necesidad de tener que prepararlos y cargarlos en el sistema una vez se reciben. Además, dado que los datos existen una única vez (esto es, en un único sitio), cualquier modificación en los mismos inmediatamente se ve reflejada en la copia compartida, lo que hace que los datos compartidos estén siempre actualizados en tiempo real.

En conclusión, aunque se trata de una plataforma relativamente nueva creemos que es una herramienta que ofrece muchas posibilidades y que continúa ampliando su oferta de funcionalidades, por lo que puede ser una herramienta a tener en cuenta.

Cuéntanos qué te parece.

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

Estamos comprometidos.

Tecnología, personas e impacto positivo.