Skip to main content

Snowflake

Video

Puedes ver el video de este script acá: https://youtu.be/B8Ppy4RgHBg

Hola de nuevo, soy Feregrino y hoy les voy a hablar de Snowflake.

Si te tuviera que definir Snowflake en una sola frase diría que es una basesota de datos en la nube. Aunque la compañía se define más formalmente como una plataforma de datos en la nube, bajo el esquema SaaS, Software as a Service.

Es Software as a Service porque no te debes preocupar por el hardware, no te debes preocupar por instalar nada de software, y del mantenimiento y actualización ni hablamos, todo esto son tareas que Snowflake se encargará de realizar.

Arquitectura de Snowflake#

Se compone de tres capas que tienen una arquitectura híbrida en la que se comparte el almacenamiento, pero el cómputo se realiza de forma separada e independiente en una computadora diferente cuando hacemos procesamiento o una consulta. Un híbrido entre la arquitectura comparte todo y la arquitectura comparte nada.

Almacenamiento en la base de datos#

El almacenamiento en Snowflake está completamente centralizado, cuando cargas tu información Snowflake se encarga de gestionar TODOS los aspectos de cómo es que esta información es almacenada: su organización, tamaño de los archivos, estructura, compresión, metadatos, estadísticas… en resumen, todo. Esto lo hace con la finalidad de hacerlo encajar en el formato que le permite a Snowflake operar. Tu como usuario no te debes preocupar por esto, es más, como usuario ni siquiera tienes acceso a esta información en forma “cruda”, cualquier interacción sucede a través de las consultas que se hacen a Snowflake.

¿En donde se almacenan los datos?#

Cuando vas a comenzar a usar Snowflake, te pregunta qué plataforma en la nube quieres usar, tanto para cómputo como para almacenamiento. Al estar completamente orientado a la nube tienes que elegir entre alguno de los tres grandes proveedores, por ejemplo en AWS puede usar S3, en Azure puede usar Azure File Storage y en Google Cloud Platform algo como Cloud storage.

Procesamiento de consultas#

La segunda capa de Snowflake es la del procesamiento, en este caso, a diferencia de la capa de datos en donde todo es compartido, el procesamiento si es dividido en unidades de procesamiento individuales, bajo el nombre de “virtual warehouses”, dependiendo de su tamaño, cada warehouse puede ser formado internamente por un conjunto de nodos que Snowflake mismo se encarga de solicitar del proveedor en nube que elegiste al comenzar a usar la herramienta.

Snowflake permite elegir diferentes tamaños de warehouse dependiendo del tamaño de la tarea que vas a realizar, entre más grande más costo va a tener. La simpleza radica en que no te debes preocupar por solicitar un número determinado de instancias de EC2, por ejemplo, si estás usando AWS como backend.

Servicios de nube#

Adicionalmente a la capa de almacenamiento y procesamiento de datos, Snowflake provee además de una tercera capa que ellos le llaman “cloud services”, yo la veo más como de administración puesto que se encarga de todo, desde la gestión de usuarios hasta el envío de consultas a la capa de procesamiento. Esta capa también corre en algún servidor dentro del proveedor en nube que hayas elegido con anterioridad.

Esta capa se encarga de: La autenticación y control de acceso, gestión de infraestructura y metadatos y también de interpretar y optimizar las consultas que cada usuario le hace a Snowflake.

Jerarquía de la información#

La forma en la que Snowflake nos presenta la información es en forma de Tablas y Vistas, seguramente ya las conoces de previas experiencias con otras bases de datos. Estas tablas y vistas son agrupadas dentro de un Schema, y estos Schemas son contenidos a su vez dentro de una base de datos. Creando así una jerarquía de Bases de datos, schemas y tablas o vistas.

Esta jerarquía además de darnos un sentido de orden, nos ayuda a controlar el acceso de forma muy granular a cada uno de los objetos dentro de nuestra plataforma de datos.

Tipos de datos#

Snowflake soporta tipos de datos numéricos como decimales, enteros, y flotantes. También soporta cadenas de texto y binarias, tipos de datos booleanos y una gran variedad de formatos de fechas y horas. Una buena extensión de es que también soporta objetos al estilo JSON y arreglos de cualquier tipo de los anteriormente mencionados. Por último, también soporta el almacenamiento de tipos de datos geográficos.

Formas de conectarse#

Todo esto suena fantástico… pero ¿cómo hace uno para conectarse y comenzar a usar estas maravillas?

Pues la forma más básica y sencilla es a través de la interfaz web de Snowflake, que si has usado algún gestor gráfico de bases de datos. Además de que igual tiene un cliente de línea de comandos y conectores ODBC y JDBC para integrarse directamente con Snowflake; también hay bibliotecas clientes para conectar tus aplicaciones.

Sin importar de donde provenga, nuestra consulta siempre va a ser recibida en la capa de servicio y de ahí dirigida a la capa de cómputo en donde será ejecutada en el warehouse de nuestra elección. Recuerda, nosotros no tenemos acceso directo al almacenamiento de los datos.

Lenguaje#

El lenguaje que nosotros usaremos para comunicarnos con Snowflake es una especie de superset de SQL, de decir, soporta las instrucciones SQL estandar, como el clasico INSERT, UPDATE, DELETE, así como otras instrucciones de manipulación de la estructura de la base de datos como CREATE y ALTER… además de añadir algunas instrucciones para crear y manipular algunos de los recursos extras que ofrece.

No puedo dejar de hacer énfasis en la importancia de que si se quieren dedicar a alguna carrera dentro del mundo de los datos, ya sea ingeniería, ciencia o cualquier cosa, deben aprender SQL y poder manejarlo a un nivel funcional y si pueden a un nivel avanzado.

Cargando información#

Una de las primeras tareas que tenemos que ejecutar cuando comenzamos a usar Snowflake es rellenar la plataforma con la información de nuestro negocio. Para esto podemos usar algo conocido como Stages, que son simplemente una especie de apuntadores o atajos directos que especifican en dónde existen los archivos con la información que queremos cargar.

Stages internas y externas.#

Las externas hacen referencia a alguna de las plataformas de almacenamiento en nube como S3, Cloud Storage o Azure Blob Storage, y también puede ser un archivo en el sistema de archivos local de una computadora.

Las internas que son objetos: archivos o tablas que son almacenadas dentro de Snowflake sin que sean necesariamente una tabla que cualquiera pueda consultar.

También hay dos formas de cargar información y van en relación a la forma en la que lo hacemos

Carga a granel (o bulk) y continua#

Te imaginarás que si ya tienes información en tu datacenter o servidor de base de datos quizá quieras cargar todo de una sola vez, y eso es posible con la carga a granel. Pero la cosa no se queda ahí, si sigues recibiendo información continuamente también puedes usar una herramienta de Snowflake llamad Snowpipe para llevar esta tarea a cabo.

OLAP y OLTP#

Si ya llegaste hasta acá, te estarás preguntando: ¿debo dejar de usar mi vieja confiable base de datos y migrar a esta nueva tecnología? Y déjame te hago algunas preguntas:

  • ¿Necesitas que tu base de datos responda en cuestión de milisegundos cuando haces una petición?
  • ¿Requieres que tu base de datos respete la integridad referencial de tus datos, restricciones de valores únicos o índices?
  • ¿Realizas múltiples UPDATEs o INSERTs individuales como parte del dia a dia de tu negocio?

Si respondiste que si a alguna de las preguntas anteriores, no te recomiendo que reemplaces tu base de datos por Snowflake… si respondiste que no, tengo otras preguntas para ti:

  • ¿Requieres hacer análisis “pesados”, tanto en cantidad de datos como en complejidad de la consulta?
  • ¿Requieres que múltiples analistas trabajen con tu información al mismo tiempo sin que se afecten los unos a los otros?

Si respondiste que si alguna de las preguntas anteriores, tal vez puedas considerar nutrir una instancia de Snowflake con tu base de datos transaccional para realizar estos análisis, de otro modo, tal vez Snowflake todavía no sea para ti.

Y es que Snowflake está diseñado para ser una base de datos OLAP u Online Analytical Processing Database (procesamiento analítico en línea) optimizada para acelerar la consulta de los datos, no tanto su inserción o actualización. Como parte de estas optimizaciones, en Snowflake no puedes establecer relaciones entre tablas, ni crear índices, ni siquiera crear restricciones de valores únicos en cada tabla.

Por otro lado, muchas de las bases de datos que conocemos, del estilo SQL Server, MySQL y PostgreSQL son del top OLTP u Online Transactional Processing (procesamiento de transacciones en línea), estas si están hechas para recibir datos constantemente en la forma de inserciones y actualizaciones, además de respetar la integridad referencial con relaciones, índices y restricciones únicas.

Data Marketplace#

Antes de terminar este video, quiero platicarles de otra de las características que ofrece Snowflake, es conocida como el Data Marketplace, que es un lugar en el que tu como compañía o individuo puedes acceder a datasets curados para fortalecer tus análisis sin necesidad de recolectar esta información directamente. Como el nombre lo indica, es un mercado de información, en el que puedes acceder a conjuntos de datos de alta calidad gratuitos o de paga, todo esto dentro del mismo entorno de Snowflake.

Costo#

El costo de Snowflake es un poco… raro de calcular. Pagas dos cosas: el almacenamiento y el procesamiento. Recuerda que a final de cuentas tus datos están almacenados en el almacenamiento de la plataforma de la nube que hayas elegido y debes pagar por ese almacenamiento. Por otro lado, también debes pagar por el procesamiento de estos datos, ya sea que estés rellenando de golpe toda tu plataforma, estés realizando un análisis de datos o simplemente estés haciendo una consulta para traer nuevos datos de entrenamiento.

Alternativas#

Como todo, existen alternativas para Snowflake que ofrecen más o menos los mismos servicios, bajo más o menos los mismos esquemas, entre ellos están Firebolt, Panoply, Grow, Amazon Redshift y Google BigQuery.

Espero que este video les haya servido y les haya sido de utilidad, ya saben que si así fue les pido un Me Gusta y que lo compartan con aquellos a los que les podría servir. Los invito a que me sigan en Twitch, mi canal alternativo de YouTube o Twitter.

Suscríbanse si es que aún no lo han hecho y nos vemos la próxima.