Datawarehouse como servicio en azure (sqldw)

50
#SQSummit Data warehouse como servicio en Azure (SQLDW) Enrique Catalá Bañuls Mentor [email protected]

Transcript of Datawarehouse como servicio en azure (sqldw)

Page 1: Datawarehouse como servicio en azure (sqldw)

#SQSummit

Data warehousecomo servicio en Azure (SQLDW)

Enrique Catalá Bañuls

Mentor

[email protected]

Page 2: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 3: Datawarehouse como servicio en azure (sqldw)

Soluciones data warehousing de MSMicrosoft SQL Server

Entorno escalable SMP y

NUMA en cualquier

hardware

OnPremise y Azure IaaS

Ideal para datamarts

desde pequeños a

“medianos”

Solo software

10s de TB

Microsoft Analytics

Platform System (APS)

Appliance para entornos

datawarehouse de alto

rendimiento MPP

Solo OnPremise

Ideal para alto

rendimiento y alta

escalabilidad de DW

Applicance (SW y HW)

10s de TB – 6 PB (PDW)

24TB – 1.2 PB (Hadoop)

Microsoft Azure SQL Data

Warehouse (SQLDW)

Cloud data warehouse

para entornosd de alto

rendimiento MPP

Solo cloud

Ideal para alto

rendimiento, alta

escalabilidad en cloud

Solución completa PaaS

10s de TB – PBs

Page 4: Datawarehouse como servicio en azure (sqldw)

¿Qué es SQLDW?

PaaS

Escalablehorizontal

ArquitecturaMPP

Integrado(SSDT, TSQL)

Hibrido(Polybase)

Costeefectivo

Page 5: Datawarehouse como servicio en azure (sqldw)

Qué es el MPP?

Page 6: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 7: Datawarehouse como servicio en azure (sqldw)

Cerebro vs Músculo (divide y vencerás)

Page 8: Datawarehouse como servicio en azure (sqldw)

Control Node (cerebro)

• Acepta requests de usuario

• Interpreta la petición y la escala

• Optimiza la petición

• Orquestra acciones

• Realiza la consolidación final

• Devuelve los resultados

Un único

cerebro

Requiere un motor

relacional distribuido

Page 9: Datawarehouse como servicio en azure (sqldw)

Compute node (Músculo)

• Realiza computación extrema• Acepta requests del “cerebro”

• Es un entorno SMP altamente tuneado• Pensado para peticiones del “cerebro”

• Es el que finalmente accede al dato

Muchos

elementos

“músculo”

No podemos conectar a él

Page 10: Datawarehouse como servicio en azure (sqldw)

Distribución de datos

Pero muchos nodos de

procesamiento!

Pequeñasqueries

Divide y vencerás

Bueno para la escalabilidad

Introduce sobrecostes

Page 11: Datawarehouse como servicio en azure (sqldw)

Topología Azure SQL Data Warehouse

Page 12: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 13: Datawarehouse como servicio en azure (sqldw)

Escalabilidad y DWUs

• DWU = Data Warehouse Unit• Load rate: records/seg metiendo datos

• Scan rate: records/seg leyendo datos (CPU+IO)

• Escalabilidad lineal

Page 14: Datawarehouse como servicio en azure (sqldw)

Escalabilidad y DWUs

Page 15: Datawarehouse como servicio en azure (sqldw)

Escalabilidad y DWUs

Page 16: Datawarehouse como servicio en azure (sqldw)

Escalabilidad y DWUs

• Concurrent query• Petición con independencia de si es serie o paralela

• Concurrency slot• Slot de hilos disponibles (mas slots, mas

paralelismo)

Page 17: Datawarehouse como servicio en azure (sqldw)

Arquitectura para SQLDW con DWU100

Page 18: Datawarehouse como servicio en azure (sqldw)

Arquitectura para SQLDW con DWU600

Page 19: Datawarehouse como servicio en azure (sqldw)

Arquitectura para SQLDW en Pausa

Page 20: Datawarehouse como servicio en azure (sqldw)

Cómo escalar

• Azure Portal Slider

• T-SQL Command

• Powershell cmdlet

• Y esperar unos pocos minutos

Documentación en http://aka.ms/sqldw

Page 21: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 22: Datawarehouse como servicio en azure (sqldw)

Arquitectura de carga – SSIS ó BCP (1)

Page 23: Datawarehouse como servicio en azure (sqldw)

Arquitectura de carga – SSIS ó BCP (2)

Page 24: Datawarehouse como servicio en azure (sqldw)

Arquitectura de carga – SSIS ó BCP (2)

Page 25: Datawarehouse como servicio en azure (sqldw)

Arquitectura de carga - Polybase

Page 26: Datawarehouse como servicio en azure (sqldw)

Arquitectura de carga - Polybase

--Import data from

CREATE TABLE Prod_DB.dbo.TargetTable_EXCH

WITH (Distribution=HASH (ColA),

CLUSTERED INDEX (ColB),

PARTITION (ColC) RANGE RIGHT ON VALUES (xxx,

xxx, xxx … ))

AS

SELECT poly.PK_Field, poly.ColA, poly.ColB

FROM Prod_DB.dbo.ExternalTable_In_Polybase poly

Page 27: Datawarehouse como servicio en azure (sqldw)

BCP

bcp {database}.dbo.lineitem_cci in

C:\Toolbox\dbgen\lineitem.tbl -c

-U username

-P password

-S xxxxxxxx.database.windows.net

-q -t"|"

-r \n -w

Page 28: Datawarehouse como servicio en azure (sqldw)

SSIS

Nuevo destino SQL PDW• SSDT 2012

• SSDT 2014

• SSDT 2015

Page 29: Datawarehouse como servicio en azure (sqldw)

SQL Server PDW Destination Editor

Page 30: Datawarehouse como servicio en azure (sqldw)

Rendimiento de carga

BCP

SSIS

Polybase

PolyBase BCP SQLBulkCopy/ADF SSIS

Load Rate

Rate increase as you increase DWU Yes No No No

Rate increase as you add concurrent load No Yes Yes Yes

FASTEST============>>>>>>>>>>SLOWEST

Pero si que se incrementa en

Polybase cuando tenemos muchos

ficheros por carpeta

Page 31: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 32: Datawarehouse como servicio en azure (sqldw)

Limitaciones (mínimas)

• No se crean automáticamente estadísticas (ni se mantienen)

• Pensado para cargas con Polybase• Cuello de botella en nodo de computación

• Las vistas son metadata only• No schemabinding

• No se pueden actualizar datos de las tablas base

• No hay indexed views

Page 33: Datawarehouse como servicio en azure (sqldw)

Limitaciones (medianas)

• Tamaño de fila máximo 32k

• Es transaccional pero:• Solo READ UNCOMMITED

• No hay nested transactions

• No hay distributed transactions

Page 34: Datawarehouse como servicio en azure (sqldw)

Limitaciones (críticas)

• No se soporta• Identity, PK, FK, Checks, UNIQUE, computed

columns, sequences, triggers, sparse

• No se soportan todos los tipos de datos• varchar(max), nvarchar(max),uniqueidentifier

text, image, timestamp,xml,geometry,geography, hierarchyid, sql_variant, table

NOTA: Todos los tipos de datos tienen workaround, la mayoría valen con varbinary(8000)

Page 35: Datawarehouse como servicio en azure (sqldw)

Limitaciones• Tamaño de una transacción (ojo aquí)

Page 36: Datawarehouse como servicio en azure (sqldw)

Limitaciones…

• ANSI joins on updates

• ANSI joins on deletes

• merge statement

• cross-database joins

• cursors

• SELECT..INTO

• INSERT..EXEC

• output clause

• inline user-defined functions

• multi-statement functions

• common table expressions

• recursive common tableexpressions (CTE)

• CLR functions and procedures

• $partition function

• table variables

• table value parameters

• distributed transactions

• commit / rollback work

• save transaction

• execution contexts (EXECUTE AS)

• group by clause with rollup / cube / grouping sets options

• nesting levels beyond 8

• updating through views

• use of select for variable assignment

• no MAX data type for dynamicSQL strings

Page 37: Datawarehouse como servicio en azure (sqldw)

ETL vs ELT

• Extract

• Transform

• Load

ETL SERVER

DATA

WAREHOUSE

SERVER

EXTRACT

TRANSFORM

LOAD

ELT SERVER

DATA

WAREHOUSE

SERVER

EXTRACT

TRANSFORM

LOAD

ELTETL

IN-MEMORY

TRANSFORMS

FEWER CPUS

IN-DB

MORE CPUS

GOOD SORT

Page 38: Datawarehouse como servicio en azure (sqldw)

Mapeo de datos

Page 39: Datawarehouse como servicio en azure (sqldw)

Contenido de la sesión

• ¿Qué es SQLDW?

• Topología de SQLDW

• Escalabilidad y DWUs

• Cómo cargar datos en SQLDW

• Limitaciones

• Experiencias en proyectos reales

Page 40: Datawarehouse como servicio en azure (sqldw)

Fases del Proyecto

• Carga de datos en SQLDW• Ajustes en modelo

• Patrón para subir de OnPrem a SQLDW• Marcas de cambios

• Cambio de ETL a ELT (si tenemos solución BI)• Traducir SSIS a Reports (ya no habrán SSIS)

• Pruebas y mediciones• 500 y 1000 DTUs como mínimo probarlas

Page 41: Datawarehouse como servicio en azure (sqldw)

Carga de Datos en SQLDW

• Subir backups a Azure

• Restaurar backups en Azure

• Exportar datos a CSV

• Subir CSVs a Azure Storage

• Cargar CSVs en SQLDW

Page 42: Datawarehouse como servicio en azure (sqldw)

Patrón para subir OnPrem a SQLDW

• Marcas en tablas origen (timestamp)

• En SQL IaaS Azure (staging)• Subir datos desde OnPrem (Staging)

• Comparar marcas OnPrem vs SQLDW

• Cargar cambios en SQLDW

Page 43: Datawarehouse como servicio en azure (sqldw)

Ajustes en Reports

• Convertir los SSIS a Query SQLDW• Queries complejas

• 24 horas convertir SSIS a query (generalmente)

Page 44: Datawarehouse como servicio en azure (sqldw)

Pruebas y Mediciones

Operativa Fase MBps Nº hilos Tamaño (GB) Tiempo necesario horas

Subir Backups Carga -Restaurar Backups Carga 16.00

Generacion CSV Carga 20 1 975 13.88

Subiendo CSV Carga 55 1 975 5.05

Cargando CSV Carga 20 8 304 1.74 Sincronización Sync -

Query Excel Excel 500 DTW 120 secs

Query Excel Excel 1000 DTW 75 secs

Nota. Margen de mejora. Máquinas A6 (4 cores) sin almacenamiento

Premium ni múltiples discos

Page 45: Datawarehouse como servicio en azure (sqldw)

Estimaciónes para particionado

Bytes_per_row: 250#_rows: 60,000,000,000B_to_GB_factor: 1,000,000,000Distribution_count: 60Compression_factor: 5 (typical)Partition_count: 36 (monthly over three years)Max_rows_per_rowgroup

rows_per_distribution = #_rows / distribution_countrows_per_partition = rows_per_distribution / partition_countmax_rowgroups_per_partition = partition_count / max_rows_per_rowgroup

Uncompressed_table_size_b = bytes_per_row x # rowsUncompressed_table_size_gb = Uncompressed_table_size_b / B_to_GB_factorUncompressed_table_distribution_size_gb = uncompressed_table_size_gb/distribution_countCompressed_distribution_size_gb = Uncompressed_table_distribution_size_gb /compression_factorCompressed_partition_size_gb = Compressed_distribution_size_gb / partition_count

Page 46: Datawarehouse como servicio en azure (sqldw)

Precios (abril 2016)

Nivel Hora Mensual Conc. Query Conc. Slot

100 DWU 0,66 € 492,00 € 32 4

500 DWU 3,31 € 2.459,00 € 32 20

1000 DWU 6,61 € 4.919,00 € 32 40

1500 DWU 9,92 € 7.378,00 € 32 60

2000 DWU 12,22 € 9.838,00 € 32 80

• Recuerda SIEMPRE pausar la implementación cuando no la uses

• Puedes seguir subiendo datos si usas Polybase

Page 47: Datawarehouse como servicio en azure (sqldw)

Lecciones aprendidas en proyectos reales

1. Diseña tus objetos pensando en distribución de datos

2. Crea siempre estadísticas tras el CREATE TABLE

3. Actualiza siempre estadísticas tras una carga

4. Particiona tus objetos

5. Comienza con DTW 300 para hacer mediciones

Page 48: Datawarehouse como servicio en azure (sqldw)

Lecciones aprendidas en proyectos reales

1. Utiliza BIML

2. Carga mediante Polybase

3. Crea tus objetos mediante plantillas T4

4. Utiliza un separador de texto compuesto “$|x”

5. Tu máquina de desarrollo en Azure • Subiendo datos ganarás tiempo en cada prueba

Page 49: Datawarehouse como servicio en azure (sqldw)

Conclusión: ¿Necesito entonces SQLDW?

• Si el dinero no es problema

• Si ya había estado valorando la opción de APS

• Si no tengo una solución de BI• O si no quiero invertir más en BI y quiero ir por la

vía del Hierro

• Si tengo tanto dato que es inviable hacerlo con solución de BI • Necesito saltarme la fase de transformación y ver

cuanto antes el dato

Page 50: Datawarehouse como servicio en azure (sqldw)

También puedes preguntar tus

dudas con el hashtag

#SQSummit en Twitter

ADAPTIVE BI FRAMEWORK

Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de analítica de negocio basada en nuestra experiencia:

•Diseña antes de construir

•Automatización de procesos por ETL

•Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción de procesos específicos y plataformas de analítica de negocio

•Muy fácil de mantener

SOLIDQ FLEX SERVICES

Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas sean estables. Desde una solución sencilla de monitorización, hasta un servicio de atención de incidencias 24/7, mantenimiento proactivo, resolución de problemas y línea de soporte.

Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas importantes.

¡Gracias!