Concepción de Sistemas de Información
-
Upload
sara-bishop -
Category
Documents
-
view
27 -
download
0
description
Transcript of Concepción de Sistemas de Información
1
Concepción de Sistemas de InformaciónInstituto de Computación – Facultad de Ingeniería – Universidad de la República
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
SEMINARIO
Presentación día 13 con fecha 23/07/2001
Artículo: Efficient Resumption of Interrupted Warehouse Loads
Expositor: Pablo Morales
2
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
3
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
4
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
5
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
6
Proceso de carga normal
Definición:
Secuencia de tuplas: T = [t1..tn] ; con atributos [a1..am]
Ejemplo de carga
7
Representación del workflow de carga con un Grafo Acíclico Dirigido (DAG):
Proceso de carga normal
8
DAG
Notación:
X YYX YO
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
9
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()
10
Propiedades para re-asumir la carga:
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
(Same-set(Y )) If Y is an extractor then Same-set(Y ) = true if Y uses GetAll or GetAllReordered 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.
Proceso de carga con falla
11
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 yj YO and yj Y’O .Otherwise, Contributes(xi,yj )
= false.
Contributors(YX, yj ) =T , where IsSubsequence(T , YX) and
(xi T : Contributes(xi, yj )) and (xi YX : Contributes(xi,yj ) xi T).
Proceso de carga con falla
12
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).
13
X YYX ZY
Z WWZ
map-to-one map-to-one map-to-one
Subset-feasible(YX)
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 is map-to-one and ZY :
Subset-feasible(ZY ). Otherwise, Subset-feasible(YX) = false.
Proceso de carga con falla – Filtrado Seguro
Definición:
14
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.
15
X YYX
V1
V2
V3
XV1
XV2
XV3
Proceso de carga con falla – Filtrado Seguro
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 is suffix-safe and
ZY : Prefix-feasible(ZY ). Otherwise, Prefix-feasible(YX) = false.
Definición:
16
X YYX
V1
V2
V3
XV1
XV2
XV3
Proceso de carga con falla – Filtrado Seguro
in-det-out(Y )
Transform Y is in-det-out if Y produces the same output sequence whenever it processes the same input sequences.
Propiedad:
17
X YYX
V1
V2
V3
XV1
XV2
XV3
Proceso de carga con falla – Filtrado Seguro
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:::)).
Propiedad:
18
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 – Filtrado Seguro
Same-seq(YX)
If X 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.
Definición:
19
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
Proceso de carga con falla – Ident. Contribuyentes
20
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).
Propiedades a satisfacer para poder identificar los contribuyentes:
Match con yj en
Attrs(YX) Attrs(YO)
Contributors(YX, yj)No-hidden-contributor(YX)
Proceso de carga con falla – Ident. Contribuyentes
21
Propiedades a satisfacer para poder identificar los contribuyentes:
Proceso de carga con falla – Ident. Contribuyentes
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.
Definición:
22
Propiedades a satisfacer para poder identificar los contribuyentes:
Proceso de carga con falla – Ident. Contribuyentes
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) [ ]).
Propiedad:
23
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
Observaciones:
24
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
25
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
26
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) =[ ].
Definición:
Proceso de carga con falla – Ident. Contribuyentes