Feb 16, 2015
Antonio SotoAntonio [email protected] SQL Server MCTSQL Server MCT
Datawarehouse(SQL Server, Oracle,
DB2, Teradata)
SQL/Oracle
SAP/Dynamics
Sistemas Propietario
sTexto XML
Integration Services
InformesDashboard
sCuadros
de MandoExcel
HerramientaBI
Analysis Services
AsumimosAsumimosExperiencia con SSIS y SSASExperiencia con SSIS y SSAS
ObjetivosObjetivosDiscutir el diseño, rendimiento y escalabilidad para construtir Discutir el diseño, rendimiento y escalabilidad para construtir paquetes ETL y cubos (UDMs)paquetes ETL y cubos (UDMs)Buenas PrácticasBuenas PrácticasErrores ComunesErrores Comunes
BPA = Best Practice Analyzer
Utilidad que escanea los metadatos de SQL Server y recomienda buenas prácticas
Buenas prácticas adquiridas del equipo de desarrollo y Customer Support Services
Novedades:Soporte para SQL Server 2005
Soporte para Analysis Services y Integration Services
Planificación del scaneo
Auto actualizable
Disponible la CTP, RTM en Abril
http://www.microsoft.com/downloads/details.aspx?FamilyId=DA0531E4-E94C-4991-82FA-F0E3FBD05E63&displaylang=en
Integration ServicesPequeña IntroducciónPrincipios del Buen Diseño de PaquetesComponent DrilldownOptimización de Rendimiento
Analysis ServicesIntroducción a UDM Buenas Prácticas de diseño de UDMTips de Rendimiento
Introducido en SQL Server 2005El sucesor de Data Transformation ServicesLa plataforma para una nueva genración de tecnologías de integración de alto rendimiento
Datos Call Center: semi estructurados
Datos propietarios:ficheros binarios
Base de Datos
ETL Almacén
Informes
Datos Móviles
Minería de Datos
Alertas y escalación
•Integración y almacenamiento requiren operaciones y almacenamiento intermedio.•La preparación de datos necesita de herramientas diferentes, en muchos casos incompatibles.•Reporting y escalación son procesos lentos, retrasando las respuestas.•Con grandes volúmenes de datos, este escenario poco manejable.
CodificaciónManual
Área Intermedia
Minería de Texto
ETL Área intermedia
Limpiezay
ETL
Área Intermedia
ETL
Call center: Datos Semi
Datos propietarios: ficheros binarios
Base de datos
•Integración y almacenamiento en una operación sencilla y fácilmente administrable.•Origen, preparación y carga de daos en un único proceso auditable.•Reporting y escalación pueden paralelizarse con la carga del almacén.•Puede escalar a requisitos muy altos de complejidad y carga.
SQL Server Integration Services
Minería de texto
Origen Personalizado
Orígenes Estándard
Limpieza de Datos
Mezclas
Minería de Datos
Almacén
Informes
Datos Móviles
Alertas y escalación
Flujo de Control (Motor de Ejecución)Motor de Flujos de Trabajo paralelosEjecuta contenedores y Tareas
Flujo de Datos (“Pipeline”)Tarea Especial del flujo de controlA high-performance data pipelineApplies graphs of components to data movementLos Componentes pueden ser orígenes de datos, transformaciones y destinosPosibilidad de crear operaciones en paralelo
Introducción a Integration ServicesPrincipios del Buen Diseño de PaquetesDetalle de los ComponentesOptimización de Rendimiento
Seguir las guías: Microsoft Development GuidelinesDiseño iterativo, desarrollo y pruebas
Conocer el NegocioComprender las personas y los procesos es crítico para el éxitoUna excelente referencia:“Data Warehouse ETL Toolkit” de Kimball
Pensar en toda la soluciónContención de recursos, ventana de procesamiento, …SSIS no soluciona un mal diseño de base de datosSe siguen aplicando los “viejos” principios – e.j. ¿cargamos con o sin índices?
Consideraciones de PlataformaSe ejecutará en IA64 / X64?
BIDS no en IA64 – ¿Cómo depuraremos?Está el driver OLE-DB XXX disponible para IA64?
Memoria y uso de recursos en plataformas diferentes
Modularidad de ProcesosRomper ETL complejos en paquetes lógicos diferentes (vs. Diseño monolítico)Mejora la experiencia de desarrollo y depuración
Modularidad de PaqueteSeparar subprocesos dentro del paquete en diferentes contenedoresMás elegante y sencillo de desarrollarPodemos deshabilitar contenedores enteros cuando estamos depurando
Modularidad de ComponenteUtilizar Scripts de Tarea y Transformación para problemas que no sean repetitivosCrear componentes personalizados para maximizar la reutilización
Usar Configuraciones de PaqueteDesde el principio
Nos facilitará las cosas en el despliegue
Simplificar el despliegue Desarrollo QA ProducciónUsar el Registro de Paquetes
Rendimiento y DepuraciónSeguridad desde el primer momento
Credenciales y otra información sensiblePaquete y ProcesoConfiguración y Parámetros
SSIS es programación visualUtilizar un sistema de control de código fuente
Deshacer no es una buena técnicaPensar en escenarios de múltiples-programadores
Comenta tus paquetes y scriptsEn 2 semanas probablemente puedes haberte olvidado de alguna parte de tu diseñoProbablemente en algún momento otra persona tenga que mantenerlo
Utilizar el manejo de erroresUtilizar las restricciones de precedencia correctamente en las tareasUsar las salidas de error en transformaciones – almacénalas en una tabla para procesarlas más tarde, incluso podemos gestionarlas en el propio paquetesTry…Catch en los scripts
Evita el sobre-diseñoDemasiada modularidad no es elegante y puede ser más lentoPero no tengas miedo de experimentar– Hay muchas formas de resolver un problema
Maximiza el ParalelismoReserva suficientes threadsPropiedad EngineThreads en la Tarea de Flujo de Datos“Regla del Pulgar” – Nº de Orígenes + Nº de componentes asíncronos
Minimiza BloqueoComponentes Síncronos vs. AsíncronosMemcopy es caro – reduce el número de componentes asíncronos en un flujo si es posible- veremos un ejemplo
Minimiza los datos auxiliaresPor ejemplo, minimiza los datos obtenidos por LookupTx
Utilizar las características de registro y auditoríaMsgBox es tu amigoLos Depuradores de datos son tus amigosUsar el componente de rendimiento del Proyecto REAL
Experimenta con diferentes técnicasUtiliza control de código fuenteEnfócate en los cuellos de botella – ahora veremos como
Pruebas en diferentes tecnologías32bit, IA64, x64Almacenamiento Local, SANConsideraciones de MemoriaConsideraciones de Red y Topología
Elimina campos redundantesUtiliza sentencias SELECT en lugar de tablasSELECT * es tu enemigoReduce también las columnas redundantes después de cada componente asíncrono!
Filtra los RegistrosLa cláusula WHERE es tu amigoConditional Split en SSISConcatena o redirige los campos no necesarios
Carga en ParaleloEL sistema de origen divide los datos de origen en múltiples partes
Ficheros planos – múltiples ficherosRelacional – vía campos clave e índices
Componentes de Múltiple Destino. Todas cargan los mismos datos
¿BCP es suficientemente bueno?La sobrecarga de ejecutar un paquete SSIS puede reducir toda la ventaja de rendimiento sobre BCP para conjuntos de resultados pequeños.Necesitamos el mayor control que nos proporciona SSIS?
¿Qué Patrón?Disponemos de varios patrones de Búsqueda – ¿Cuál encaja mejor?En el Proyecto Real existen varios ejemplos de patrones:http://www.microsoft.com/sql/solutions/bi/projectreal.mspx
¿Qué componente?Tarea Bulk Import vs. Data Flow
Bulk Import podría darnos mejor rendimiento si no necesitamos transformaciones o filtros y el destino es SQL Server.
Lookup vs. MergeJoin (LeftJoin) vs. sentencias basadas en SQLPodríamos necesitar MergeJoin si no somos capaces de rellenar la cache de búsqueda.Sentencias SQL nos pueden proporcionar un método para persistir los registros no encontrados en la cache y aplicar una operación basada en conjunto de resultados para un mejor rendimiento.
Script vs. Componente personalizadoLos scripts pueden ser buenos para pequeñas transformaciones que no serán reutilizadas
105 segundos 83 segundos
Utilizando Error Output para manejar los no encontrados
Ignorando los errores y comprobando nulos en la columna derivada
Optimiza y estabiliza lo básicoMinimiza las áreas intermedias (utiliza Ficheros Raw si es posible)Asegúrate de que tienes suficiente memoriaWindows, Disco, Red, …Grupos de Ficheros de SQL, indexación, Particionado
Obtener una Línea de BaseReemplazar los destinos con RowCountOrigen->Rendimiento RowCountOrigen->Rendimiento en Destino
Añade / cambia los componentes de forma incremental para ver los efectos
Esto podría incluir la capa de base de datosUtiliza control de código fuente
Optimiza los componentes lentos para los recursos disponibles
Enfocarse en las rutas críticasUtilizar recursos Disponibles
Restricciones de Memoria Restricciones de lectura y CPU
Dejémoslo!! Optimiza el más lento
Sigue las buenas prácticas de desarrolloComprende como la arquitectura de SSIS influye en el rendimiento
Buffers, tipos de componentesPatrones de Diseño
Aprende las nuevas característicasPero no olvides los principios existentes
Utiliza la funcionalidad nativaPero no tengas miedo de extenderla
Mide el RendimientoEnfócate en los cuellos de botella
Maximiza el Paralelismo y el uso de memoria donde se oportunoPiensa en las posibilidades de otras plataformas (RAM en 64bit )
Probar es clave