260 likes | 368 Views
Concepción de Sistemas de Información. Instituto de Computación – Facultad de Ingeniería – Universidad de la República. SEMINARIO. Estudio de modelos y técnicas de workflow en vista a la definición de un proceso para la carga y mantenimiento de data warehouses.
E N D
Concepción de Sistemas de Información Instituto de Computación – Facultad de Ingeniería – Universidad de la República SEMINARIO Estudio de modelos y técnicas de workflow en vista a la definición de un proceso para la carga y mantenimiento de data warehouses Presentación día 13 con fecha 23/07/2001 Artículo: Efficient Resumption of Interrupted Warehouse Loads Expositor: Pablo Morales
Efficient Resumption of Interrupted Warehouse Loads Wilburt Juan Labio, Janet L. Wiener, Hector Garcia-Molina, Vlad Gorelik • Presentación de una algoritmo (DR) de recuperación ante fallas en el proceso de carga y refresque del data warehouse. • Dos características principales: • 1. No impone un overhead en el tiempo de carga normal • 2. Utiliza únicamente ciertas propiedades básicas de las transformaciones
Idea general y estrategia • Otros Algoritmos: • Rehacer toda la carga • Dividir la entrada en lotes y procesarlos en secuencia • Tomar “snapshots” periódicos del estado del workflow de carga • Dividir el workflow en estados (identificarlos) y guardar resultados intermedios
Idea general y estrategia • Algoritmo DR: • No hay overhead en el proceso de carga normal • No es necesario modificar los procesos de transformación • Quién codifica los elementos de transformación (wrappers, etc) debe declarar si éstos cumplen alguna propiedades simples • Explota la semántica del workflow de carga para ser selectivo al reasumir luego de una falla
Aportes • Presentación del marco que describe los procesos de carga normales y con fallas identificando ciertas propiedades • Presentación del algoritmo DR que filtra tuplas de entrada ASAP • Conclusiones
Proceso de carga normal Ejemplo de carga • Definición: • Secuencia de tuplas: T = [t1..tn] ; con atributos [a1..am]
Proceso de carga normal Representación del workflow de carga con un Grafo Acíclico Dirigido (DAG):
YX YO X Y DAG Notación: X : Componente Y : Componente YX : Parámetro de entrada del componente Y producido por X YO : Parámetro de salida del componente Y YX : Secuencia que instancia el parámetro de entrada YX YO : Secuencia que instancia el parámetro de salida YO Y(...YX...) = YO : Y produce YO procesando YX (y otras secuencias) W : Secuencia que se carga en el warehouse en ausencia de fallas
Proceso de carga con falla • Tipos de fallas: • El algoritmo hace foco en fallas a nivel de sistema y no a nivel lógico • Observación: • Ante cualquier falla de cualquier componente solo un prefijo de la secuencia W es cargado en el warehouse • Datos para re-asumir la carga: • El prefijo de la secuencia de entrada al warehouse W • Procedimientos provistos por los extractors • GetAllReordered(), GetAll(), GetSubSet(), GetSuffix()
Proceso de carga con falla Propiedades para re-asumir la carga: (Same-set(Y )) IfY is an extractor then Same-set(Y ) = true if Y uses GetAll orGetAllReordered during resumption. Otherwise, Same-set(Y ) = true if YX : Same-set(X) and,given the same sets of input tuples, Y produces the same set of output tuples. En general, se deben contestar estas dos preguntas para evitar el re-proceso de tuplas: 1) Para una tupla dada del warehouse, cuales de las tuplas de YX contribuyen a ella. 2) Cuándo es seguro filtrar esas tuplas de YX
Proceso de carga con falla Definición: (Contributes, Contributors) Given transform Y , let Y(...YX…) =YO and Y(…Y’X...) =Y’O . Also let YX = [x1..xi-1 xi xi+1..xn] and Y’X = [x1..xi-1 xi+1..xn]. Contributes(xi,yj ) = true, if yjYO and yjY’O .Otherwise, Contributes(xi,yj ) = false. Contributors(YX, yj ) =T , where IsSubsequence(T , YX) and (xiT : Contributes(xi, yj )) and (xiYX : Contributes(xi,yj ) xiT).
Proceso de carga con falla – Filtrado Seguro Propiedad: map-to-one(YX) Given transform Y with input parameter YX, YX is map-to-one if YX; YO; xi YX: (Y (:::YX:::) = YO) (yj ; yk YO such that Contributes(xi,yj ) and Contributes(xi,yk) and j k).
YX ZY X Y Z W Proceso de carga con falla – Filtrado Seguro Definición: Subset-feasible(YX) Given transform Y with input parameter YX, Subset-feasible(YX) = true if Y is the warehouse inserter. Otherwise, Subset-feasible(YX) = true if YX ismap-to-one and ZY : Subset-feasible(ZY ). Otherwise, Subset-feasible(YX) = false. WZ map-to-one map-to-one map-to-one Subset-feasible(YX)
Proceso de carga con falla – Filtrado Seguro Propiedad: suffix-safe(YX) Given T = [t1::tn], let First(T ) =t1, Last(T ) =tn, and ti T tj if ti is before tj in T or i = j. Given transform Y with input parameter YX, YX is suffix-safe if YX; YO; yj ; yj+1 YO: (Y (:::YX:::) =YO) )(Last(Contributors(YX, yj )) YX First(Contributors(YX,yj+1))). If Contributors(YX, yj ) = [ ] or Contributors(YX, yj+1) = [ ], then YX is not suffix-safe.
X Y V1 V2 V3 YX Proceso de carga con falla – Filtrado Seguro Definición: Prefix-feasible(YX) Given transform Y with input parameter YX, Prefix-feasible(YX) = true if Y is the warehouse inserter. Otherwise, Prefix-feasible(YX) = true if YX issuffix-safe and ZY : Prefix-feasible(ZY ). Otherwise, Prefix-feasible(YX) = false. XV1 XV2 XV3
X Y V1 V2 V3 YX Proceso de carga con falla – Filtrado Seguro Propiedad: in-det-out(Y ) Transform Y is in-det-out if Y produces the same output sequence whenever it processes the same input sequences. XV1 XV2 XV3
X Y V1 V2 V3 YX Proceso de carga con falla – Filtrado Seguro Propiedad: set-to-seq(YX) Given transform Y with input parameter YX, YX is set-to-seq if (Y is in-det-out) and (YX; Y’X : ((YX and Y’X have the same set of tuples) and (all other input parameters of Y receive the same sequence)) Y (:::YX:::) =Y (:::Y’X:::)). XV1 XV2 XV3
Proceso de carga con falla – Filtrado Seguro Definición: Same-seq(YX) IfX is an extractor then Same-seq(YX) = true if X uses the GetAll re-extraction procedure. Otherwise, Same-seq(YX) = true if X is in-det-out and XV : (Same-seq(XV ) or(XV is set-to-seq and Same-set(V ))). Otherwise, Same-seq(YX) = false. Observación: Dado un path desde una fuente hasta un componente Y, para que se cumpla Same-seq(YX) exijo que todos los componentes del path sean in-det-out, y si uno no lo es, entonces exijo que el siguiente sea set-to-seq (más fuerte)
Proceso de carga con falla – Ident. Contribuyentes Objetivo: Identificar las tuplas de una secuencia YX que son contribuyentes a una tupla del warehouse wk Idea: Matchear los atributos que YX y wk tienen en común
Contributors(YX, yj) Match con yj en Attrs(YX) Attrs(YO) Proceso de carga con falla – Ident. Contribuyentes Propiedades a satisfacer para poder identificar los contribuyentes: no-hidden-contributor(YX) Given transform Y with input parameter YX, no-hidden-contributors(YX) if YX, YO, yj YO, xi Contributors(YX, yj ), a (Attrs(YX) Attrs(YO)): (Y (:::YX:::) = YO) (xi.a = yj.a). No-hidden-contributor(YX)
Proceso de carga con falla – Ident. Contribuyentes Propiedades a satisfacer para poder identificar los contribuyentes: Definición: CandAttrs(YX,P) Let P be a path from input parameter YX to the warehouse. There are three possibilities for CandAttrs(YX,P): 1. If Y is the warehouse inserter, then CandAttrs(YX, P) =Attrs(YX). 2. If no-hidden-contributors(YX), then CandAttrs(YX; P) = [ ]. 3. Else CandAttrs(YX, P) = CandAttrs(ZY, P’ ) Attrs(YX), where P = [YX ZY ::WI], and P’ is P excluding YX.
Proceso de carga con falla – Ident. Contribuyentes Propiedades a satisfacer para poder identificar los contribuyentes: Propiedad: no-spurious-output(Y ) A transform Y produces no spurious output if input parameters YX, YX, YO, yj YO : (Y (:::YX:::) = YO) (Contributors(YX,yj) [ ]).
Proceso de carga con falla – Ident. Contribuyentes Observaciones: no-hidden-contributor(YX) = Se cumple si todas las tuplas de entrada YX que contribuyen a una tupla de salida yj matchean con yj en Attrs(YX) Attrs(YO) CandAttrs(YX, P) = Todos los atributos presentes en el path P desde YX al warehouse. Estos atributos identifican a los potenciales contribuyentes de una tupla final wk idAttrs(YX) = Conjunto de atributos utilizados para identificar los contribuyentes de YX a la tupla del warehouse wk. Los contribuyentes serán los que matcheen con wk en idAttrs(YX)
Proceso de carga con falla – Ident. Contribuyentes Por lo tanto: Dados wk y CandAttrs(YX, P) puedo identificar a los potenciales contribuyentes de wk en YX. Dados wk y idAttrsPath(YX, P) puedo identificar a los contribuyentes de wk en YX.
Proceso de carga con falla – Ident. Contribuyentes 1. IdAttrs(YX) = KeyAttrs(YX) if KeyAttrs(YX) CandAttrs(YX, P) and both Y and Z satisfy the no-spurious-output property. 2. IdAttrs(YX) = KeyAttrs(WZ) if KeyAttrs(WZ) CandAttrs(YX, P). 3. IdAttrs(YX) = IdAttrs(ZY) if IdAttrs(ZY) CandAttrs(YX, P).
Proceso de carga con falla – Ident. Contribuyentes Definición: IdAttrsPath(YX,P), IdAttrs(YX) Let P be the only path from YX to the warehouse. There are three possibilities for IdAttrsPath(YX,P) (i.e., IdAttrs(YX)). 1. If (KeyAttrs(YX) CandAttrs(YX, P) and ZV P : ZV has no spurious output tuples), then (IdAttrsPath(YX, P) = KeyAttrs(YX)). 2. Otherwise, let ZV P but ZV YX. Let P’ be the path from ZV to the warehouse. If (IdAttrsPath(ZV, P’) [ ] and IdAttrsPath(ZV, P’) CandAttrs(YX, P)), then (IdAttrsPath(YX,P) = IdAttrsPath(ZV ,P’)). 3. Otherwise IdAttrsPath(YX,P) =[ ].