El Data Warehouse siempre ha sido considerado como la fuente de verdad dentro de una compañía. Con la llegada de la computación en nube y las tecnologías de big data, empezó a crecer de manera exponencial el número de datos que las empresas querían analizar y, en consecuencia, los Data Warehouses se vieron en la obligación de crecer para poder cubrir dicha necesidad.

Paralelamente al dimensionamiento de los Data Warehouse nació el concepto de Data Lake y la filosofía de “democratización de los datos”. Este concepto, a pesar de tener muchas ventajas, arroja algunas cuestiones desde el punto de vista de una visión centralizada de los datos:

¿Cómo garantizo que tengo la versión más reciente de la información?
¿Cómo hago disponible la información de manera eficiente a los usuarios tanto en rendimiento como en coste?
¿Cómo garantizo el gobierno de la plataforma para asegurar que cada usuario tenga acceso solo a la porción que debe ver?
¿Cómo tratar las diferentes fuentes de datos estructuradas y no estructuradas desde un único punto?
¿Cómo integrar toda la información de mi Data Lake con herramientas de reporting?
¿Cómo puedo proteger mis datos frente a borrados accidentales?

A continuación vamos a descubrir cómo afronta SnowFlake este y otros problemas a la hora de implementar un Data Warehouse en la nube.

SnowFlake

SnowFlake es un Data Warehouse ofrecido como SaaS (Software as a Service). Entre sus principales características destacan la concurrencia virtualmente ilimitada y un enfoque orientado a la explotación de los datos sin tener que preocuparse por las tareas de mantenimiento del Datawarehouse. Todos los componentes de Snowflake se ejecutan en la nube pública (AWS o Azure).

Arquitectura

La arquitectura de Snowflake es el resultado de combinar los beneficios de las arquitecturas de bases de datos tradicionales y de sistemas shared-nothing. Como las arquitecturas de bases de datos Snowflake usa un repositorio central de datos para almacenar la información que es accesible por todos los nodos de cómputo del datawarehouse. Por otro lado al igual que los sistemas shared-nothing Snowflake procesa las consultas utilizando MPP (massively parallel processing) donde cada nodo de cómputo almacena una porción de los datos de manera local.

Utilizando esta arquitectura los recursos de almacenamiento y cómputo pueden escalar de una manera independiente y, en consecuencia, se facturan también de manera independiente.

arquitectura snowflake

Características

Escalabilidad

SnowFlake soporta dos tipos de escalado:

  • Escalado vertical para mejorar el rendimiento en escenarios de queries pesadas y carga de datos.
  • Escalado horizontal para mejorar el rendimiento en escenarios de alta concurrencia de queries (para poder usar esta funcionalidad se debe utilizar la edición Enterprise).

En los casos en los que se use escalado horizontal se puede activar además el autoescalado de Snowflake, lo que permitirá ajustar el rendimiento de nuestro datawarehouse ante picos de carga.

Disponibilidad y resiliencia

Snowflake se encuentra desplegado en tres zonas de disponibilidad. Cuando se produce un error en una de las zonas de disponibilidad Snowflake se recupera automáticamente sin afectar al usuario.

Actualmente Snowflake se encuentra disponible en las siguientes regiones:
AWS

  • AWS US West
  • AWS US East
  • AWS EU (Dublin)
  • AWS EU (Frankfurt)
  • AWS Asia Pacific (Sydney)

Azure

  • Azure East US 2
  • Azure West Europe
Auto-resume & Auto-suspend

Snowflake permite suspender un cluster de manera automática después de un tiempo específico de inactividad. Del mismo modo permite arrancar automáticamente un cluster suspendido cuando se le envía una query al cluster. De este modo se pueden optimizar los costes de procesamiento de nuestro Datawarehouse ya que solo se nos facturará por el tiempo que el cluster permanezca activo.

Información Semi-estructurada

SnowFlake soporta los siguientes formatos de información semi-estructurada sin necesidad de realizar ningún tipo de transformación:

  • Json
  • XML
  • Avro
  • ORC
  • Parquet
Soporte SQL

Snowflake utiliza SQL estándar incluyendo un subconjunto de ANSI SQL:1999 y una parte de las extensiones analiticas de SQL:2003

Importación & exportación

La información se puede importar en Snowflake desde Amazon S3 o desde Azure Blob Storage. Hay dos formas de importar la información en Snowflake:

  • Utilizando el comando SQL COPY
  • Utilizando Snowpipe

Para la mayoría de los escenarios Snowpipe es más efectivo en coste porque usa una aproximación serveless para la carga de los datos.

La información de Snowflake se puede exportar a Amazon S3 o a Azure Blob Storage.

Time Travel

Time Travel permite acceder a un punto específico del histórico de los datos dentro de un periodo determinado.

Con esta funcionalidad se pueden realizar las siguientes acciones:

  • Consultar información que haya sido actualizada o borrada
  • Crear clones de tablas, esquemas y bases de datos a partir de un punto de tiempo específico en el pasado.
  • Restaurar tablas, esquemas y bases de datos que se hayan borrado.

Integración con terceros

Snowflake tiene SDKs para los principales lenguajes de programación y se integra con múltiples soluciones de integración de datos y BI como Tableau, Qlik, MicroStrategy, etc.
Integración SnowFlake terceros

Seguridad

Acceso:

  • Control de acceso mediante listas blancas y negras a nivel de IP.
  • Comunicación privada entre la VPC del cliente y Snowflake mediante AWS PrivateLink.

Autentificación de usuarios:

  • MFA (Multi Factor Authentication) para el acceso de los usuarios.
  • Soporte para el acceso mediante SSO (Single sign-on) para autenticaciones federadas.

Seguridad de objetos:

  • Acceso controlado a todos los objetos de la cuenta a través de un modelo híbrido de DAC (discretionary access control) y RBAC (role-based access control).

Seguridad de los datos:

  • Toda la información es encriptada automáticamente.
  • Re-encriptación periódica de la información.
  • Soporte para la encriptación de la información utilizando claves proporcionadas por el cliente

Modelo de facturación

El modelo de facturación de Snowflake está dividido en dos partes: el uso del almacenamiento y el uso de los “Virtual Warehouse” (nodos de cómputo).

A todos los clientes se les factura una cantidad al mes por la información almacenada en Snowflake. Esta cantidad se calcula en función de la media del almacenamiento utilizado al mes después de la comprensión de la información.

La facturación de los “Virtual Warehouse” se hace en función de los Snowflake Credits. Estos créditos son una unidad de medida que se consumen solo cuando los nodos de cómputo están en ejecución. En función del tamaño del “Virtual Warehouse” en ejecución este consume X créditos por hora tal y como vemos en la siguiente tabla:

Modelo facturación de SnowFlake

La facturación de los créditos es por segundo con un mínimo de un minuto.

Conclusión

Snowflake puede ser una excelente opción para aquellas empresas que tengan necesidades que se adapten a una o varias de las siguientes premisas:

  • Almacenamiento de grandes cantidades de información sin tener que escalar los nodos de cómputo en consecuencia.
  • Tratamiento de información estructurada y semi-estructurada desde un mismo punto.
  • Acceso a la información del data warehouses desde múltiples usuarios y/o departamentos de manera concurrente.
  • Agilizar el uso del datawarehouse sin tener que invertir tiempo en el mantenimiento y optimización del mismo.

Author

  • Arturo Martinez

    Cloud Architect en Keepler. "I am passionate about Big Data in any of its aspects and the public cloud in all its flavors (AWS, Azure, Google Cloud). I love facing new challenges every day and constantly discovering new ways to get value from data. In my job I try to design and implement scalable and resilient architectures that add value."