1. Bases de Datos Temporales
Aragón Asenjo, Pablo
Iturrate Gil, Iñaki Asier
“Cualquier tiempo pasado fue anterior”
Les Luthiers
2. Índice
– Definición de Base de Datos Temporal (BDT)
– Motivación de las BDT
– Relaciones bitemporales (Ejemplo)
– Operaciones
– Problemas
– Implementación
– Sistemas de Gestión de BDT (TimeDB)
– Conclusiones
2 Bases De Datos Temporales
3. ¿Qué NO es una Base de Datos Temporal?
Si insertamos información en la Base de Datos y jamás la
modificamos ni la borramos, tenemos una Base de Datos Histórica.
Si la Base de Datos sólo contiene
datos actuales, tenemos una Base
de Datos Instantánea. Cuando la
información de los datos deja de ser
cierta se actualiza o se elimina el
registro anterior.
3 Bases De Datos Temporales
4. ¿Qué es una Base de Datos Temporal?
Una Base de Datos Temporal
es aquella que almacena datos
históricos y datos actuales.
4 Bases De Datos Temporales
5. Motivación
Muchas de las aplicaciones de tecnología de bases
de datos son temporales por naturaleza.
Desarrollar un modelo que potencie la gestión
temporal de la información:
– Finanzas: Cotizaciones bursátiles, contabilidad, cuentas bancarias...
– Reservas: Vuelos, trenes, hoteles...
– Ciencia: Monitorización meteorológica...
– Recursos humanos
– Registros sanitarios
– …
5 Bases De Datos Temporales
6. Ejemplo: Bernardo (I)
Bernardo Sabina nació un soleado 6 de marzo de 1985 en Zaragoza.
Su madre registró su nacimiento al día siguiente.
Tras acabar sus estudios de Ingeniería el 15 de junio de 2007,
Bernardo se mudó ese mismo día a Torrevieja a vender
hamburguesas con queso.
Sin embargo, no registró su mudanza hasta el 25 de junio, ya que
tenía una competición nacional de tenis de mesa.
Pese a tener un futuro prometedor, Bernardo murió el 20 de
septiembre 2012 de un baldosazo en la cabeza en el CPS, cuando iba
a ver la presentación del PFC de su hermano. El equipo forense CpSI
registró su muerte el mismo día.
6 Bases De Datos Temporales
7. Ejemplo: Bernardo (II)
¿Qué transacciones SQL se
realizarían con una base de datos
convencional?
7 Bases De Datos Temporales
8. Ejemplo: Bernardo (III)
Fecha Hecho ocurrido Acción de la BD Vista en la BD
6/03/1985 Nace Bernardo. - -
Se registra su Inserción: Bernardo vive en
7/03/1985
nacimiento. (Bernardo,Zaragoza) Zaragoza.
Bernardo se muda a Bernardo vive en
15/06/2007 -
Torrevieja. Zaragoza.
Bernardo registra la Actualización: Bernardo vive en
25/06/2007
mudanza. (Bernardo,Torrevieja) Torrevieja.
Bernardo muere; se Borrado:
20/09/2012 -
registra el hecho. Bernardo
[…] […] […] […]
8 Bases De Datos Temporales
9. Ejemplo: Bernardo (IV)
Tiempo de Validez (TV): se define como el
periodo en el que un hecho es cierto en el
mundo real.
Por ejemplo, el TV de (Bernardo, Zaragoza) es
06/03/85-15/06/07.
9 Bases De Datos Temporales
11. Ejemplo: Bernardo.TablaTV (II)
Nombre Ciudad TVI TVF
Bernardo Zaragoza 06/03/1985 ∞
Nombre Ciudad TVI TVF
Bernardo Torrevieja 15/06/2007 ∞
11 Bases De Datos Temporales
12. Ejemplo: Bernardo.TablaTV (III)
Nombre Ciudad TVI TVF
Bernardo Zaragoza 06/03/1985 ∞
Nombre Ciudad TVI TVF
Bernardo Torrevieja 15/06/2007 ∞
Nombre Ciudad TVI TVF
Bernardo Zaragoza 06/03/1985 15/06/2007
Bernardo Torrevieja 15/06/2007 ∞
12 Bases De Datos Temporales
13. Ejemplo: Bernardo (V)
Tiempo de Transacción (TT): se define como el
tiempo en el que se ha incluido el hecho en la base
de datos.
Datos bitemporales: son aquellos que combinan
(almacenan) TV y TT
– Tiempo de validez inicial (TVI)
– Tiempo de validez final (TVF)
– Tiempo de transacción inicial (TTI)
– Tiempo de transacción final (TTF)
13 Bases De Datos Temporales
14. Ejemplo: Bernardo.TablaTT (I)
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 uc
14 Bases De Datos Temporales
15. Ejemplo: Bernardo.TablaTT (II)
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 uc
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 25/06/07
2 Bernardo Zaragoza 06/03/85 15/06/07 25/06/07 uc
3 Bernardo Torrevieja 15/06/07 ∞ 25/06/07 uc
15 Bases De Datos Temporales
16. Ejemplo: Bernardo.TablaTT (III)
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 uc
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 25/06/07
2 Bernardo Zaragoza 06/03/85 15/06/07 25/06/07 uc
3 Bernardo Torrevieja 15/06/07 ∞ 25/06/07 uc
Registro Nombre Ciudad TVI TVF TTI TTF
1 Bernardo Zaragoza 06/03/85 ∞ 07/03/85 25/06/07
2 Bernardo Zaragoza 06/03/85 15/06/07 25/06/07 uc
3 Bernardo Torrevieja 15/06/07 ∞ 25/06/07 20/09/12
16 4 Bernardo Torrevieja 15/06/07 20/09/12 20/09/12 uc
Bases De Datos Temporales
17. Posible aplicación
Una aplicación inmediata de este tipo de Bases de
Datos es aquella que se ejecuta en un entorno
donde se aplican cambios en Tiempo Real.
Por ejemplo, las transacciones bancarias incluyen tiempo
inicial de transacción y tiempo final de transacción.
Son BD llamadas de Restauración o Rollback, ya
que permiten retroceder al estado de la BD en un
instante de tiempo pasado, recuperando todas las
versiones anteriores.
17 Bases De Datos Temporales
18. Operaciones de escritura
Inserción: Se crea una versión actual del
dato, TVI correspondiente y TVF = ∞.
Eliminación: Actualiza el TVF del dato y
pasa a ser histórico (sin ningún registro
actual).
Modificación: Eliminación + Inserción.
18 Bases De Datos Temporales
19. Problemas: claves y restricciones
Las claves primarias ya no son válidas.
¿Qué claves primarias usamos en BDT?
Aparecen nuevas restricciones.
¿Cuáles son y cómo las tratamos?
19 Bases De Datos Temporales
20. Claves (I): Intervalo
Un intervalo es una tupla del tipo:
– [inicial, final]
– En nuestro caso: [fecha inicial, fecha final]
Debe cumplir las siguientes restricciones:
– Existencia de un ordenamiento total.
– Existencia de inicio y fin; inicio <= fin.
– Función sucesora (¿granularidad?)
20 Bases De Datos Temporales
21. Claves (II): Granularidad
Granularidad: es una partición en grupos de elementos
ordenados en un dominio temporal.
Gránulo: es un valor dentro de la granularidad elegida
para un propósito.
Para que nos entendamos…
– Gránulo: día. No distinguirá entre fechas de un mismo día.
– Gránulo: mes. No distinguirá entre fechas de un mismo mes.
21 Bases De Datos Temporales
22. Claves (III)
Si usamos una BD convencional, utilizaríamos
como clave “Nombre” (Bernardo).
Una clave primaria en BDT debe incluir:
– Características de clave primaria de BD convencional
– Un intervalo (y por tanto sus restricciones)
– Restricciones de contigüidad y solapamiento.
Si insertas un nuevo dato con un intervalo no contiguo,
ERROR!
Si insertas un nuevo dato con un intervalo que se solapa con
otro, ERROR!
Una buena clave para Bernardo es:
(Nombre, TVI, TVF)
22 Bases De Datos Temporales
23. Implementación (I)
1. Una sola tabla contiene todas las tuplas actuales e
históricas.
2. Partición horizontal: crear dos tablas, una para la
información válida y otra para la información
histórica.
3. Partición vertical: se distribuyen los atributos de la
relación temporal en distintas relaciones, los
atributos que se actualizan a la vez se ponen en la
misma relación.
23 Bases De Datos Temporales
24. Implementación.operadores(I)
Al igual que existen operadores de entidades para el álgebra
relacional existen operadores para tratar intervalos:
– START(I): primer valor del intervalo I
– END(I): ultimo valor del intervalo I
START (I) <= END(I)
– IN(I): si s es un valor que cumple que s IN(i)=TRUE, si y sólo si se
cumple:
((START(I) <= s) AND (s <= END(I))
¡Por definición siempre hay al menos un punto I en un intervalo!
24 Bases De Datos Temporales
25. Implementación.operadores(II)
Operadores de comparación:
Sean I1= [i1, f1]; I2=[i2, f2] ; intervalos de tipo INTERVAL (tp), donde I1= I2 si y sólo si i1= i2 y f1=f2
I1 BEFORE I2: es cierto si y sólo si f1< i2 es verdadero [i1,f1][i2,f2]
I1 MEETS I2: es cierto si y sólo si i2 = f1+1 ó i1 = f2+1, es decir, alguno es
verdadero [i1, f1][i2=f1+1, f2] ó [i2, f2][i1=f2+1,f1])
I1 OVERLAPS I2: es cierto si y sólo si i1 <= f2 y i2 <= f1 son ambos ciertos. Es
decir [i2 [i1, f1] f2] o [i1[i2, f1] f2]
I1 DURING I2: es cierto si y sólo si i2 <= i1 y f2 >= f1 son ambos verdaderos [i2 [i1, f1]f2]
I1 START I2: es cierto si y sólo si i1 = i2 y f1 <= f2 son ambos verdaderos [i1=i2,f1]f2]
I1 FINISHES I2: es cierto si y sólo si f1 = f2 y i1 >= i2 son ambos verdaderos [i2[i1,f1=f2]
25 Bases De Datos Temporales
26. Implementación.operadores(III)
Más operadores de comparación:
I1 MERGES I2: es cierto si y sólo si I1 MEETS I2 es verdadero ó I1
OVERLAPLS I2: es verdadero
I1 CONTAINS I2: es verdadero si y sólo si I2 DURING I1 es verdadero.
DURATION (I1): devuelve la cantidad de puntos que hay en el intervalo I1
Operadores de intervalos que producen intervalos
I1 UNION I2: produce [MIN (i1,i2),MAX (f1,f2)] cuando I1 MERGES I2 es verdadero y en caso contrario
indefinido
I1 INTERSECT I2: produce [MAX(i1,i2), MIN(f1,f2)] cuando I1 OVERLAPS I2 es verdadero y queda indefinido
en otro caso.
Operadores sobre conjuntos de intervalos
UNFOLD: desglosa intervalos en unidades menores
COALESCE: agrupo intervalos en unidades mayores
26 Bases De Datos Temporales
27. Sistemas de Gestión de BDT
Los SGBD comerciales (Oracle,
Sybase, Informix, O2…) NO son
capaces de realizar gestión
temporal en validez y en
transacción simultáneamente.
27 Bases De Datos Temporales
28. Sistemas de Gestión de BDT (II)
Existen varias estrategias desarrolladas:
Extensiones temporales a lenguajes existentes
– TSQL2
Auténticos SGBD temporales
– TimeDB
– Tiger
– Time Series Cartridge
28 Bases De Datos Temporales
29. TSQL2
TSQL2 es una extensión temporal a
SQL92, posiblemente, la más conocida
En 1994 un comité encabezado por
Richard T. Snodgrass (Universidad de
Arizona) produjo el lenguaje de
especificación ACM SIGMOD Record,
semilla de TSQL2, que fue diseñado en el
mismo año
Las construcciones e ideas de TSQL2 han
sido propuestas para ser incorporadas a
SQL3
29 Bases De Datos Temporales
30. TimeDB (I)
TimeDB es un SGBDT basado en SQL
Fue desarrollado por Andreas Steiner
(Instituto Federal Suizo de Tecnología,
Zurich) en su Ph.D
Su última versión (2.0) está basada en
Java, usa JDBC, posee una API y ofrece
mayor funcionalidad
Soporta TSQL2
30 Bases De Datos Temporales
31. TimeDB (II): Ejemplos
Queremos crear la Tabla Temporal que
almacene a Bernardo.
CREATE TABLE PERSONA
(Nombre char[20], Ciudad char[20])
AS VALIDTIME AND TRANSACTIONTIME.
Notar que el SG debería permitir opcionalmente especificar
la granularidad (hora, día, mes…).
31 Bases De Datos Temporales
32. TimeDB (III): Ejemplos
Queremos insertar una fila:
VALIDTIME PERIOD ’06/03/85-forever’
INSERT INTO PERSONA (‘Bernardo’, ‘Zaragoza’)
Notar que el TT debería calcularlo el SG automáticamente
32 Bases De Datos Temporales
33. TimeDB (IV): Ejemplos
Queremos realizar una consulta:
VALIDTIME
SELECT CIUDAD FROM Persona
WHERE NOMBRE=‘BERNARDO’
Datos actuales: dónde vive Bernardo ahora.
33 Bases De Datos Temporales
34. TimeDB (V): Ejemplos
Queremos realizar una consulta:
TRANSACTIONTIME
SELECT CIUDAD FROM Persona
WHERE NOMBRE=‘BERNARDO’
Datos históricos: dónde ha vivido Bernardo en el
pasado.
34 Bases De Datos Temporales
35. TimeDB (VI): Ejemplos
Queremos realizar una consulta:
VALIDTIME AND TRANSACTIONTIME
SELECT CIUDAD FROM Persona
WHERE NOMBRE=‘Bernardo’
Datos actuales e históricos: dónde ha vivido
Bernardo en el pasado, y dónde vive ahora.
35 Bases De Datos Temporales
36. Conclusiones
Las SGBDT amplían la potencia de muchos de los tipos
de SGBD existentes en la actualidad.
Podríamos crear una BDR a partir de una BDT.
Sin embargo, si no se desea una gestión temporal,
podríamos estar usando recursos innecesariamente.
¿Y si se consigue eficiencia máxima en el tratamiento
de las fechas?
¿Desaparición de las BDR?
36 Bases De Datos Temporales