Temporale Datenbanken

Werbung
Temporale Datenbanken
Hanno Eichelberger,
Alexander Ruder,
Khalid Addakiri
Temporale Datenbanken
Inhalt: Grundlagen und Konzepte
Defintion
Probleme, Anforderungen
Die Zeit
Ereignisse und Fakten
Zeitinterpretationen und Relationsarten
Zeitreihendaten
Temporale Operationen
Referent: Hanno Eichelberger
Definition
Eine temporale Datenbank ist , ein
Datenbank Management System mit
eingebautem Zeitaspekt, z.B. ein
temporales Datenmodell mit einer
zeitlichen Abfragesprache. (s. Wikipedia)
Betrachtung der zeitlichen Entwicklung
eines Objektes
Probleme
Erweiterung nötig
Hoher Speicherbedarf
Standardisierung
Anforderungen
Temporale Zugriffsmodelle für Tupeloder Attributversionen anwendbar
Unterstützung von Gültigkeitsund/oder Aufzeichnungszeit
Änderung historischer Daten
Abfrage von älteren und zukünftigen
Versionen
Der Zeitstempel
Zeitstempel
Granularität
Chronon
Name
Gehalt
Maier
1000 Euro
Stunde Minute Sekunde
Chronen = 1 Sekunde
(Uhrzeiger)
Beispiele für Granularitäten
Eigenschaften Granularität
Gleichzeitige Ereignisse
Verschiedene Länge
Gegenwärtiger Zeitpunkt
Zeitelemente
Zeitintervalle (PERIOD-TSQL2.0)
Mengen von Zeitpunkten oder Zeitmarken
Zeitpunkt (TIME,DATE,TIMESTAMP)
Zeitdauer (INTERVAL)
Verschiedene Informationsarten
Punktereignisse oder
Fakten
Einzahlungen s
Einzahlungen auf Konto
Zeitpunkt t
Verschiedene Informationsarten
Dauerereignisse oder
Fakten
Gehalt u
Gehaltsstatistik
Zeitpunkt t
Verschiedene Informationsarten
Fieberkurve eines Patienten
Fieberwert g
Kontinuierliche
Ereignisse oder Fakten
Zeitpunkt t
Zeitinterpretationen
Gültigkeitszeit
Aufzeichnungszeit
Beobachtungszeit
Benutzerdefinierte Zeit
Relationsunterscheidungen
Snapshot
Gültigkeitszeitrelation
Aufzeichnungzeitsrelation
Bitemporale Relation
Gültigkeitszeitrelation Beispiel
Start- und Endzeitpunkt extra
Name
Primärschlüssel
Gehalt
Gültigkeitsstartzeit
Gültigkeitsendzeit
Müller
123456789
1000,00 01.01.2004
31.12.2004
Müller
123456789
1200,00 01.01.2005
20.03.2005
Müller
123456789
1500,00 21.03.2005
Now
Friedrich
777778888
3000,00 01.01.2003
Now
Gültigkeitszeitrelation Beispiel
Dasselbe mit Gültigkeitszeitintervallen
Name
Primärschlüssel
Gehalt
Gültigkeitszeitintervall
Müller
123456789
1000,00
[01.01.2004,31.12.2004]
Müller
123456789
1200,00 [01.01.2005,20.03.2005]
Müller
123456789
1500,00 [21.03.2005,NOW]
Friedrich
777778888
3000,00 [01.01.2003,NOW]
Gültigkeitszeitrelation Beispiel
Aufzeichnung der Gültigkeitszeiten mit einer
Menge von Zeitpunkten.
Name
Entfernung
Zeitmarken in Wochen
Müller
4 km
{(1),(2)}
Müller
10 km {(3),(4),(5)}
Müller
15 km
{(6),(7),(8)}
Friedrich
20 km
{(1),..,(8)}
In bestimmter Granularität
Bitemporale Relation Beispiel
Aufzeichnungszeitende
Aufzeichnungszeitstart
Name
Arbeitsbereich
G. Start
G. End
A.Start
A.End
Müller
Spielwarenabteilung
11.09.2005
29.09.2005
02.09.2005
UC
Gültigkeitszeitstart
Gültigkeitszeitende
Bitemporale Relation Beispiel
Name
Arbeitsbereich
G. Start
G. End
A.Start
A.End
Müller
Spielwarenabteilung
11.09.2005
29.09.2005
02.09.2005
05.09.2005
Müller
Spielwarenabteilung
11.09.2005
25.09.2005
06.09.2005
UC
Bitemporale Relation Beispiel
Name
Arbeitsbereich
Zeitmarken in Tagen
Im Monat September
Müller
Spielwarenabteilung
(11,2),..,(11,5),(29,2),...,(29,5),
(11,6),...,(11,29),(25,6),..,(25,UC)
(Gültigkeitszeitmarke, Aufzeichnungszeitmarke)
Zeitfolgen
Versionen
Name
Primärschlüssel
Gehalt
Gültikeitszeitintervall
Müller
123456789
100,00 [01.01.2004,31.12.2004]
Müller
123456789
120,00 [01.01.2005,20.03.2005]
Müller
123456789
150,00 [21.03.2005,NOW]
Wong 777778888
300,00 [01.01.2003,NOW]
Ähnlichkeit zu
Informationsarten
Zeitfolge =
Verschiedene
Versionen von
Objekt
Datenmodelle
1NF (1st Normal Form)
N1NF(Non 1st Normal Form)
N1NF Beispiel
Name
Gehalt
<[01.09.2003,01.09.2004],2000>
Müller
<[02.09.2004,NOW],2500>
Zeitreihendaten
Bsp.: Aktienschlusskurse in einer Woche
Zeitdatenreihe
(100, 200, 150, 125, 300, 400, 500)
Tag 1
Tag 2
Tag 3
Tag 4
Tag 5
Tag 6
Tag 7
Vordefinierte
Sequenz
Temporale Relationsalgebra
Projektion zeigt aller zu einer Gültigkeitszeit
aktuellen Werte an
Bei Selection wird zusätzlich eine Gütigkeitszeit mit
angegeben
Gültigkeitszeit Tupel 1
Gültigkeitszeit Tupel 2
Bei einem Theta-Join wird
mit einem Ausdruck F eine
F
Gültigkeitszeit für die
kombinierten Tupels berechnet
Gültigkeitszeit für Ergebnistupel
Temporale Relationsalgebra
Left-Outer-Join ermittelt mit Ausdruck F und
F‘ die neue Gültigkeitszeit
Vereinigung ist identisch
Differenz: Ist ein Tupel von R-S gleich und
die Differenz der Zeitstempel Tr-Ts nicht null
so wird das Tupel trotzdem übernommen.
Update Operationen
Insert: Existiert ein identisches Tupel so wird
dessen Zeitstempel erweitert, sonst wird
neues Tupel eingefügt.
Delete: Ändert Aufzeichnungszeitende des
Tupels
Replace: Delete mit anschliessendem Insert
Einleitung
Basiskonzepte
Oracle Time Series
(Konzepte, Architektur, Konsistenz)
Temporal SQL/SQL2
Aufgaben Temporaler DBMS
Speicherung Zeitrelevanter Daten
Informationen mit zeitlicher Gültigkeitsdauer
Applikationen mit zeitlichen Aspekten
Buchhaltungssysteme
Transaktionsüberwachung
Anwendungen
kaum Anwendungen ohne zeitliche Relevanz
Alle Anwendungen profitieren von automatisierter
Unterstützung von temporalen Daten
Informationen sind Verauchsgüter
Basiskonzepte
Einfachstes Konzept: Erweiterung relationaler Tabellen
Problem:
●
Schematas sind zu kompliziert
●
SQL Abfragen unhandlich und langsam
Basiskonzepte, Zeit
Lineare Zeit
Zeitgrenzen (left, right, bound)
Density (discrete, dense, continuous)
Kalender
Datentypen, zum Beispiel SQL92:
–
–
–
–
–
DATE (YYYY-MM-DD)
TIME (HH:MM:SS)
DATETIME (YYYY-MM-DD HH:MM:SS)
INTERVAL (no default granularity)
TSQL2: PERIOD: DATETIME - DATETIME
3. Oracle TimeSeries
vormals TimeSeries Cartridge
Erweiterung zur Speicherung und zum Retrieval
zeitbehafteter Daten mit Hilfe von Objekttypen
bietet Funktionen zur bequemen Ermittlung u.a.
von:
–
–
Aktienkurse an einem bestimmten Datum
monatl. Umsätze f. eine Aktie in einem best. Jahr
Oracle Time Series
Regular Time Series
–
–
–
Dateneingabe nach zugeordneten Kalender
Periodische Intervalle
zB Kursinformationen einer Aktie
Irregular Time Series
–
–
–
Nicht periodisch, kein zegeordneter Kalender
Lastspitzen
zB Transaktionsdaten von Bankkonten
Oracle TS - Data Generation
Oracle TS – Data Generation
Detailierte individuelle Verlaufsdaten (zB Aktienhandel)
Jeder Datensatz besitzt Zeitstempel und Unique-ID
Aufsummieren nach Zeitperiode (zB Tagessummen)
Abspeichern der Summensätze in getrennter Tabelle
Summen sind Grundstock für Historical Data
– Tägliche Aktualisierung der H.D. durch Tagessummen
– Anpassen der Korrekturen an den Tagessummen in
Intervallen
– Queries können jederzeit erfolgen
– Ignoriert Daten mit dem aktuellen Datum bis Ende des
update cycles
Oracle TS – Historical Data
Oracle TS – Historical Data
Wenige Metadaten, extrem hohe Datenmengen
Basis für viele Funktionen: Summen, Maxima, Minima,
Flusswerte...
Beispiel Aktienhandel:
–
–
–
–
mehrere Aktien, mit eindeutiger Ticker-ID in der Datenbank
pro Aktie mehrere Metawerte (ticker, timestamp, open...)
jede Aktie hat eine oder mehrere Zeitreihen
jede Zeitreihe besitzt einen zugehörigen Kalender
Oracle TS – Kalender
Kann einer Zeitreihe zugeordnet werden (reguläre)
Shared Kalender
Kalender -Frequenz - Feinheit der Kalenderdarstellung: Sekunde, Tag,
Jahr..
Kalender – Schema (Pattern)
–
Intervall für die Frequenz und Startdatum des ersten Intervall
Durchlaufes
Kalender – Exceptions
–
–
–
Zeitstempel die nicht in den Kalender passen, aber gebraucht werden
Off - Exception, Ausnahme für nichtnull Werte, diese werden entfernt
On – Exception, Ausnahme für null Werte, diese werden hinzugefügt
Oracle TS – Datentypen
Kalendertypen
CREATE TYPE ORDSYS.ORDTCalendar AS OBJECT (
caltype INTEGER,
name VARCHAR2(256),
frequency INTEGER,
pattern ORDSYS.ORDTPattern,
minDate DATE,
maxDate DATE,
offExceptions ORDSYS.ORDTExceptions,
onExceptions ORDSYS.ORDTExceptions);
CREATE TYPE ORDSYS.ORDTPatternBits AS VARRAY(32500) OF INTEGER;
CREATE TYPE ORDSYS.ORDTPattern AS OBJECT (
patBits ORDSYS.ORDTPatternBits,
patAnchor DATE);
Exception (ORDTExceptions)
CREATE TYPE ORDSYS.ORDTExceptions AS VARRAY(32500) OF DATE;
Datentypen für Zeitreihen
CREATE TYPE ORDSYS.ORDTNumCell AS OBJECT
(tstamp DATE, value NUMBER);
CREATE TYPE ORDSYS.ORDTNumTab AS TABLE OF
ORDSYS.ORDTNumCell;
CREATE TYPE ORDSYS.ORDTNumSeries AS OBJECT (
name VARCHAR2(256),
cal ORDSYS.ORDTCalendar,
series ORDSYS.ORDTNumTab );
CREATE TYPE ORDSYS.ORDTNumSeriesIOTRef AS OBJECT(
name VARCHAR2(256),
cal REF ORDSYS.ORDTCalendar,
table_name VARCHAR2(256),
tstamp_colname VARCHAR2(30),
value_colname VARCHAR2(30),
qualifier_colname VARCHAR2(30),
qualifier_value VARCHAR2(4000));
CREATE TYPE ORDSYS.ORDTVarchar2Cell AS OBJECT
(tstamp DATE, value VARCHAR2(4000));
CREATE TYPE ORDSYS.ORDTVarchar2Cell AS OBJECT
(tstamp DATE, value VARCHAR2(4000));
CREATE TYPE ORDSYS.ORDTVarchar2Tab AS TABLE OF
ORDSYS.ORDTVarchar2Cell;
CREATE TYPE ORDSYS.ORDTVarchar2Series AS OBJECT(
name VARCHAR2(256),
cal ORDSYS.ORDTCalendar,
series ORDSYS.ORDTVarchar2Tab);
CREATE TYPE ORDSYS.ORDTVarchar2SeriesIOTRef AS OBJECT(
name VARCHAR2(256),
cal REF ORDSYS.ORDTCalendar,
table_name VARCHAR2(256),
tstamp_colname VARCHAR2(30),
value_colname VARCHAR2(30),
qualifier_colname VARCHAR2(30),
qualifier_value VARCHAR2(4000));
CREATE TYPE ORDSYS.ORDTDateTab AS TABLE OF DATE;
Oracle TS -Architektur
Speicherung der
detaillierten Verlaufsdaten
Instanzen und Referenzen
basierende API
Kalenderfunktionen
Time Series Funktionen
Skalierungsfunktionen
Administrationstools
Oracle TS – Speicherung
●
Gespeichert werden 3 verschiedene Informationstypen
●
Bewegungsdaten, Kalender und Metadaten
●
Index basierende Tabellen : multiple rows in 3 Tabellen
●
Nested Table: Verlaufsdaten werden als Objekte geschrieben
●
Daten aufsteigend nach Zeitstempel sortiert
Oracle TS – Konsistenz
Regeln für Zeitreihen
–
–
–
–
–
–
alle Zeitstempel sind aufsteigend sortiert
alle Zeitstempel sind eindeutig
alle Zeitstempel erfüllen die Kalender precision
es gibt keine Zeistempel ausserhalb des Gültigkeitsbereiches
alle Zeitstempel passen in das Kalenderschema, abzüglich der
durch die Exceptions erfassten.
die Zeitreihe ist fortlaufend, das heisst zwischen dem kleinsten und
dem größten Zeitstempel in der Zeitreihe, enthalten die
Verlaufsdaten records für jedes gültige Kalenderdatum.
Oracle TS - Konsistenz
Precision
●
Verwendung eines Views, verhindert das Einfügen, Löschen und Ändern eines
ungültigen Zeitstempels
INSTEAD OF Trigger
Insert:
Zeitstempel muss im Kalender gültig sein
Einfügen vor dem ersten bzw nach dem letzten Zeitstempel
●
Delete:
bei leerer Zeitreihe wird Exception geworfen
es kann nur der letzte bzw der erste Zeitstempel gelöscht werden
●
Update:
Zeitstempel muss existieren
keine Änderungen am Zeitstempel oder der Unique-ID gestattet
●
●
Erlaubt gebündeltes Einfügen und Löschen, Reihenfolge gewährleistet
Temporal SQL
Konzepte sind ähnlich Oracle Time Series
Datentypen
Spracherweiterungen
Standardkonzepte in Planung
Temporal SQL/ SQL2(Fort)
Basis: bitemporale Datenmodell
Spracherweiterungen:
VALIDTIME, TRANSACTIONTIME, PERIOD, …
Vergleich von Zeitintervallen:
MEETS, PRECEDES, OVERLAPS und CONTAINS
Quellen
Oracle8i Time Series User‘s Guide
TimeCenter
www.TimeConsult.com
● Temporale Datenbanken
Abfragen an temporalen Datenbanken
Aufbau einer temporalen Datenbank
SQL 92 Norm
- current Abfragen
- sequenced Abfragen
- nonsequenced Abfragen
- Joins
Analogie SQL 3
● Temporale Datenbanken
Aufbau temporaler Tabelle
Gültigkeitsbeginn Gültigkeitsende
Weide
Parzelle
Pferch
Anzahl
Von
Bis
1
137
1
17
1998-02-07
1998-02-18
1
219
1
43
1998-02-25
1998-03-01
1
219
1
20
1998-03-01
1998-03-14
1
219
2
23
1998-03-01
1998-03-14
1
219
2
43
1998-03-14
9999-12-31
1
374
1
14
1998-02-20
9999-12-31
Beispiel: Viehzucht
Valid Time
● Temporale Datenbanken
SQL 92
- Current Abfragen liefern immer Informationen über den derzeit gültigen
Zustand einer temporalen Tabelle
Beispiel: Wie viel Vieh von Parzelle 219 auf Weide 1 befindet sich gerade
in jedem Pferch
Abfrage
SELECT Pferch, Anzahl
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
AND Bis = DATE‘9999-12-31‘
liefert
Pferch
Anzahl
2
43
● Temporale Datenbanken
SQL 92
- sequenced Abfragen liefern immer Informationen über die Entwicklung einer
temporalen Tabelle, d.h. sie gibt eine zeitliche Abfolge zurück
Beispiel: Gib die Entwicklung von Parzelle 219 auf Weide 1 pro Pferch aus
Abfrage
SELECT Pferch, Anzahl, Von, Bis
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
liefert
Pferch
1
1
2
2
Anzahl
43
20
23
43
Von
1998-02-25
1998-03-01
1998-03-01
1998-03-14
Bis
1998-03-01
1998-03-14
1998-03-14
9999-12-31
Man kann hier nun
erkennen dass Vieh
aus Pferch 1 am
01.03.1998 umgelegt
wurde in Pferch 2
und am 14.03.1998
der Rest nachfolgte
● Temporale Datenbanken
SQL 92
- nonsequenced Abfragen betreffen irgendwelche Zeitpunkte an denen etwas
in der Tabelle zutrifft. Die Gültigkeit der Tupel ist nicht relevant
Beispiel: Wie viel Vieh von Parzelle 219 auf Weide 1 war zu irgendeiner
Zeit in jedem Pferch
Abfrage
SELECT Pferch, Anzahl
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
liefert
Pferch
1
1
2
2
Anzahl
43
20
23
43
● Temporale Datenbanken
SQL 92
- Joins
Auch bei Joins wird zwischen current, nonsequenzed und
sequenzed unterschieden
Beispiel Join zwischen zwei Viehzuchttabellen:
Anfrage: Wie viel Vieh aus unterschiedlichen Parzellen steht
3. gerade (current Abfrage) oder
4. zu irgendeiner Zeit () im selben Pferch
● Temporale Datenbanken
SQL 92
1.
SELECT V1.Parzelle,V2 Parzelle, Pferch
FROM Viehzucht AS V1,Viehzucht AS V2
WHERE V1.Parzell < V2.Parzelle
AND V1.Weide = V2.Weide
AND V1.Pferch = V2.Pferch
AND V1.Bis=Date‘9999-12-31‘
AND V2.Bis=Date‘9999-12-31‘
2.
SELECT V1.Parzelle,V2 Parzelle, Pferch
FROM Viehzucht AS V1,Viehzucht AS V2
WHERE V1.Parzell < V2.Parzelle
AND V1.Weide = V2.Weide
AND V1.Pferch = V2.Pferch
● Temporale Datenbanken
SQL 92
- Joins
Um zu zeigen wann jemals Vieh aus unterschiedlichen Parzellen zur
selben Zeit im selben Pferch standen wird eine sequenced Anfrage
benötigt. Diese Anfrage muss jedoch eine Fallanalyse durchführen um
festzustellen wie der Gültigkeitszeitraum jedes Tupels aus V1 den
Gültigkeitszeitraum jedes Tupels V2 überschneidet.
4 Fälle: Gültigkeit V1=V1, Gültigkeit 3.
V2=V2
1.
V1
V2
2.
V1
V2
V1
V2
4.
V1
V2
In einer sequenced Anfrage müssen alle 4 Fälle beachtet werden
● Temporale Datenbanken
SQL 92
- Joins
sequenced Anfrage
SELECT V1.Parzelle, V2.Parzelle, V1.Pferch, V1.Von, V1.Bis
FROM Viehzucht AS V1, Viehzucht AS V2
WHERE V1.Parzelle<V2.Parzelle
AND V1.Weide=V2.Weide
AND V1.Pferch=V2.Pferch
AND V2.Von <=V1.Von
AND V1.Bis <= V2.Bis
UNION
SELECT V1.Parzelle, V2.Parzelle, V1.Pferch, V1.Von, V1.Bis
FROM Viehzucht AS V1, Viehzucht AS V2
WHERE V1.Parzelle<V2.Parzelle
AND V1.Weide=V2.Weide
AND V1.Pferch=V2.Pferch
AND V1.Von >V2.Von
AND V2.Bis < V1.Bis
AND V1.Von < V2.bis
● Temporale Datenbanken
SQL 92
- Joins
sequenced Anfrage
UNION
SELECT V1.Parzelle, V2.Parzelle, V1.Pferch, V1.Von, V1.Bis
FROM Viehzucht AS V1, Viehzucht AS V2
WHERE V1.Parzelle<V2.Parzelle
AND V1.Weide=V2.Weide
AND V1.Pferch=V2.Pferch
AND V1.Von <=V2.Von
AND V2.Bis <= V1.Bis
UNION
SELECT V1.Parzelle, V2.Parzelle, V1.Pferch, V1.Von, V1.Bis
FROM Viehzucht AS V1, Viehzucht AS V2
WHERE V1.Parzelle<V2.Parzelle
AND V1.Weide=V2.Weide
AND V1.Pferch=V2.Pferch
AND V2.Von >V1.Von
AND V1.Bis < V2.Bis
AND V2.Von < V1.bis
● Temporale Datenbanken
SQL 92
- Joins
sequenced Anfrage
Das Ergebnis dieser Abfrage enthält zwei Zeilen
L1
L2
Pferch
Von
Bis
219
374
1
1998-02-25 1998-03-01
219
374
1
1998-03-01 1998-03-14
Aufgrund der Komplexität solcher Abfragen mit dem derzeitigen SQL 92
Standart wird zur Zeit ein neuer Standart entwickelt der SQL 3 Standart
der auch temporale Abfragen unterstützt.
● Temporale Datenbanken
SQL 3
- Ein erster Unterschied zur 92 Norm liegt in der Erzeugung einer Tabelle
CREATE TABLE Viehzucht
(Weide INTEGER,
Parzelle INTEGER,
Pferch INTEGER,
Anzahl INTEGER)
AS VALIDTIME PERIOD (DATE)
Gibt die Unterstützung der VALID TIME an
Auch der INSERT in so erzeugte Tabellen wurde vereinfacht so hat folgender INSERT
INSERT INTO Viehzucht
VALUES(1,219,1,20)
Die Ausgabe
Weide Parzelle Pferch Anzahl VALID
1
219
1
20
[1998-02-01 – 9999-12-31)
Der VALID Wert läuft immer vom Erzeugungsdatum bis forever (9999-12-31)
● Temporale Datenbanken
SQL 3
Abfragen
-current
Auch current Abfragen werden nun unterstützt während in SQL 92 noch das
Gültigkeitsende verglichen werden musste wird es hier automatisch erkannt d.h.
unsere könnte man so schreiben
SELECT Pferch, Anzahl
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
● Temporale Datenbanken
SQL 3
Abfragen
-sequenced
sequenced Abfragen unterscheiden sich von current Abfragen nur insofern, dass
ihnen vor das SELECT der Ausdruck VALIDTIME gestellt wird unser sequenced
Abfrage nach SQL 92 können wir so schreiben
VALIDTIME SELECT Pferch, Anzahl
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
Der Ausdruck sorgt dafür, dass jeder Zustand nicht nur der
derzeitige ausgewertet wird
● Temporale Datenbanken
SQL 3
Abfragen
-nonsequenced
nonsequenced Abfragen unterscheiden sich von sequenced Abfragen nur insofern,
dass ihnen vor das VALIDTIME der Ausdruck NONSEQUENCED gestellt wird
unsere nonsequenced Abfrage nach SQL 92 können wir so schreiben
NONSEQUENCED VALIDTIME SELECT Pferch, Anzahl
FROM Viehzucht
WHERE Weide=1 AND Parzelle = 219
Der NONSEQUENCED Ausdruck sorgt dafür, dass das DBMS erkennt das
es sich um eine NONSEQUENCED Abfrage handelt und diese auch dem
entsprechend behandelt
Herunterladen