24 hop español - utilizando cdc para cargar dw on line - miguel egea
DESCRIPTION
Acercarnos al tiempo real en la carga completa de datos cuando ha de existir un DW o incluso un área de staging es un proceso que todos tenemos que implementar en ciertas ocasiones. En la charla veremos los trucos y patrones que pueden usarse para conseguir este objetivoTRANSCRIPT
Expositor: Miguel Egea MCITP, MCSE
Moderador: Freddy Angarita
Datawarehouse en tiempo real
con CDCDonde tiempo real quiere decir tiempo razonable
Gracias a nuestros auspiciadores
Database Security as Easy as A-B-C
http://www.greensql.com
Hardcore Developer and IT Training
http://www.pluralsight.com
SQL Server PerformanceTry PlanExplorer today!
http://www.sqlsentry.com
Próximos SQL Saturday
24 de Enero de 2015 https://www.sqlsaturday.com/346/register.aspx
18 de Abril de 2015 https://www.sqlsaturday.com/368/register.aspx
9 de Mayo de 2015 https://www.sqlsaturday.com/373/register.aspx
6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx
4
Capítulo Global PASS en Español
4
Reuniones semanales todos los miércoles a
las 12PM UTC-5 (Hora de Colombia)
https://www.facebook.com/SpanishPASSVC
5
Asistencia Técnica
Si requiere asistenciadurante la sesión debe usar la sección de preguntas que esta en el menú de la derecha.
Use el botón de Zoom para ajustar su pantalla al tamaño deseado
Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha
6
Miguel Egea
SQL Server MVP desde 2001, trabaja como mentor en SolidQ en el
departamento de BI. Es ponente habitual en eventos de comunidad de habla
hispana. Apasionado de la tecnología en general y de la relacionada con base
de datos en particular.
6
7
Datawarehouse en tiempo real con CDC
Normalmente se asocia un Datawarehouse con una carga nocturna, pero ¿que
pasa si necesitamos dato mucho mas fresco?
12/3/2014|
Footer Goes Here7 |
8
Suposiciones sobre conocimientos
BI Familiar con DWH y Datamarts
Modelado
Kimball, Inmon, integración, Dimensiones
lentamente cambiantes
Miembros inferidos
Relacional
Funcionamiento del log de transacciones y estructuras básicas de administración de SQL Server
9
Tecnologias disponibles
Objetivo detectar elementos nuevos, modificados o borrados rápidamente
Change Tracking
Timestamp columns
Change Data Capture
Pero no todo es tecnología, muchas veces lo más importante es el sentido
común.
10
Algunas aristas del problema
Detectar cambios es “fácil”
Determinar como cambios en tablas individuales afectan a cambios en dimensiones no es
tan inmediato
¿Detectar cambios es suficientemente rápido?
Aquí es donde la tecnología se pone de nuestro lado… de alguna forma
11
¡Que manía con detectar cambios!
10 años de datos
600.000.00 filas
En un año detectamos 60 M filas
60 millones /año 5 millones/mes 170,000 filas/ dia
Para 8 horas de datos
21,000 filas/ hora
¿Es viable cargar 21,000 filas en una hora?¿Es viable cargar 350 filas por minuto?¿Es viable cargar 6 filas por segundo?
12
Tecnologías que pueden ayudar
ChangeTracking
• Disponible incluso en Express
13
Tecnologías que pueden ayudar II
Origen
• Algunas veces los propios orígenes ya mantienen historia de cambios
Columnas timestamp
• El propio origen contiene una columna timestamp
Columna fecha
• El propio origen tiene una columna de fecha ultima modificación
Columnas autoincrementales
• Pero solo son útiles para registros nuevos no para modificaciones
14
Change Data Capture
• Basado en LogReader• Se crean tablas en el esquema CDC• SSIS proporciona componentes
manejarlos
15
Configurando CDC
DEMO
16
CDC en Integration Services
Demo de valientes… desde el principio
17
¿Qué opináis del área de staging?
No es necesaria si
El origen de datos es solo 1
O son varios pero todos SQL (salvo collation)
O no tengo espacio en los discos
O no me gusta nada.
Es necesario
Cuestión de gustos ¿Para mi siempre?
Solo si tengo que hacer integración y limpieza
18
CDC y SCD2 Sin área de staging
• Sobre el copo de nieve Producto-Subcategoría-Categoría
Suponemos que todo son SCD2
• Crear una nueva versión de UN producto
• Cerrar la versión anterior
¿Qué supone un cambio en el nombre del producto?
• Cerrar la versión de VARIOS productos
¿Qué supone un cambio en subcategoría?
• Cerrar la versión de MUCHOS productos
¿Qué supone un cambio en Categoría?
• Supone un LIO MUY GORDO.
¿Qué supone un cambio en más de un atributo?
19
DEMO
UN LIO MUY GORDO
20
CDC y SCD2 con Staging “SolidQ framework Style”
• Siempre usamos área de staging separando E-T-L
• Convertir 3 tablas en 1 es una parte de T, en nuestro caso bastante trivial (solo left join)
• Los datos desde Origen a STG son expuestos exclusivamente a través de vistas (al esquema STG)
• Los datos desde E-T se leen de vistas y se escriben en el esquema ETL de la bbdd de Staging
• Los datos de T hasta L se exponen mediante vistas
• Hay un conjunto de naming conventions
SolidQ Framework significa (muy muy resumido)
• Tabla de productos a.stg Productos,
Mantenemos la relación 1 a 1
• El proceso T es bastante simple en este caso
Creamos una vista como toda transformación
• Para el ejemplo yo lo voy a hacer “a mano”. Habitualmente lo hacemos de forma automática con nuestras propias herramientas
Simplemente Ejecutamos el proceso de Carga
21
Demo
Se convierte en algo bastante trivial.
Preguntas?
El Recetario de Restore
Warner Chavez, MCM
A continuación …
Gracias por participar