ROLAP versus MOLAP

Werbung
Data Warehousing
und
Data Mining
Speicherung multidimensionaler Daten
Ulf Leser
Wissensmanagement in der
Bioinformatik
Inhalt dieser Vorlesung
• Relationales OLAP (ROLAP)
–
–
–
–
–
Snowflake-, Star- und Fullfactschema
Speicherplatz und Queries
Änderungen in den Dimensionen
Schemavarianten
Beispiel: ROLAP in Oracle
• Evolution in Daten und Dimensionen
• Beispiel: ROLAP in Oracle
• Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
2
Relationales OLAP
• MDDM und relationales Modell nicht vergleichbar
– Konzeptionelle versus logische Ebene
– Falsch: „Relationales Modell ist zweidimensional, MDDM ist
beliebig-dimensional, das ist inkompatibel“
• Relationales Modell kann beliebig-dimensionale Daten
repräsentieren
• Verschiedene Abbildungen MDDM-Relational existieren
– Unterschiede in Speicherverbrauch, Redundanz, Performance
von INSERT/SELECT/UPDATE, ...
Ulf Leser: Data Warehousing und Data Mining
3
Beispielschema
year
month
day
shop_name
amount
sales
pg_name
shop
region
price
product_name
productgroup
Ulf Leser: Data Warehousing und Data Mining
product
region_name
4
Annahmen für Kostenbetrachtungen
• d Dimensionen, je k Klassifikationsstufen plus Top
• Jeder Klassifikationsknoten hat 3 Kinder
–
–
–
–
Level k:
Level k-1:
...
Level 0:
1=30 Knoten (Top)
3=31 Knoten
Höchste Granularität, 3k Knoten
i
3
• Zusammen: n= ∑
Knoten pro Dimension
i = 0...k
•
•
•
•
m Fakten, gleichverteilt in allen Dimensionen
Attribut: b Bytes
Knoten haben nur ID
Es gibt f Measures
Ulf Leser: Data Warehousing und Data Mining
5
Gleichmäßige Klassifikationshierarchie
Zu jedem Knoten gibt es gleich viele Kinder/Fakten
Top
Level 2
K1
Level 1
Level 0
K1.1
K1.2
K2
K1.3
Fakten
Ulf Leser: Data Warehousing und Data Mining
...
K2.1
K2.2
...
K3
K2.3
K3.1
K3.2
K3.3
...
6
Beispielquery
year
month
day
shop_name
amount
sales
pg_name
shop
region
price
product_name
productgroup
product
region_name
Summe aller Verkäufe
der Produktgruppe „Wasser“
nach Shop und Jahr
Ulf Leser: Data Warehousing und Data Mining
7
Variante 1 - Snowflake
year
productgroup
id
year
id
pg_name
product
month
id
month
year_id
day
id
day
month_id
sales
product_id
day_id
shop_id
amount
price
id
product_name
pg_id
shop
id
shop_name
region_id
region
id
region_name
Ulf Leser: Data Warehousing und Data Mining
8
Snowflake Schema
• Faktentabelle
– Measures plus Fremdschlüssel der kleinsten Klassifikationsstufe
jeder Dimension
• Dimensionstabellen
– Eine Tabelle pro Klassifikationsstufe
– Attribute: Knotenattribute und ID
– Ein Tupel pro Klassifikationsknoten
• Eigenschaften
– Voll normalisiert
– Speicherplatz:
Fremdschlüssel je
Dimension
Ulf Leser: Data Warehousing und Data Mining
Ein Tupel pro
Klassifikationsknoten
jeder Dimension
((d + f )* m + d * n )* b
Measures
9
Snowflake - Query
SELECT
FROM
WHERE
X.shop_name, y.year, sum(amount*price)
sales S, ... PG, P, D, M, Y, shop X
PG.name=„Wasser“ AND
PG.id = P.pg_id AND
P.id = S.product_id AND
D.id = S.day_id AND
M.id = D.month_id AND
Y.id = M.year_id AND
X.id = S.shop_id
group by X.shop_name, Y.year
• 6 Joins
– 4 Joins, wenn shop_name / year nicht notwendig
• Anzahl Joins steigt in jeder Dimension linear mit Länge
der Aggregationspfade in der Anfrage
Ulf Leser: Data Warehousing und Data Mining
10
Variante 2: Star Schema
product
product_id
product_name
pg_id
pg_name
time
day_id
day
month_id
month
year_id
year
sales
product_id
day_id
shop_id
amount
price
localization
shop_id
shop_name
region_id
region_name
Ulf Leser: Data Warehousing und Data Mining
11
Star Schema
• Faktentabelle
– Measures plus Fremdschlüssel der kleinsten Klassifikationsstufe
jeder Dimension
• Dimensionstabellen
– Eine Tabelle pro Dimension
– Attribute: ID und Knotenattribute aller Klassifikationsstufen
– Ein Tupel pro Klassifikationsknoten mit Level 0
• Eigenschaften
– Denormalisierte Dimensionen
– Speicherplatz
Ein Tupel pro
Klassifikationsknoten Level 0
((d + f )* m + d * 3
k
)
* k *b
Ein Attribut pro Klassifikationsstufe
Ulf Leser: Data Warehousing und Data Mining
12
Star - Query
SELECT
FROM
WHERE
group by
L.shop_name, T.year, sum(amount*price)
sales S, product P, time T, localization L
P.pg_name=„Wasser“ AND
P.product_id = S.product_id AND
T.day_id = S.day_id AND
L.shop_id = S.shop_id
L.shop_name, T.year
• 3 Joins
– Keine Reduktion wenn Jahrname nicht notwendig
– 2 Joins, wenn Shopname nicht notwendig
• Anzahl Joins
– Unabhängig von Länge der Aggregationspfade in der Anfrage
– Steigt linear mit der Anzahl Dimensionen in der Anfrage
Ulf Leser: Data Warehousing und Data Mining
13
Variante: Knotenattribute im Star Schema
• Eigenen Tabellen pro Klassifikationsstufe
– Dimensionstabelle repräsentiert Hierarchie und enthält nur Keys
– Normalisiert, speicherplatzeffizient, ggf. zusätzliche Joins
• Dimensionstabelle
– Keys mehrfach vorhanden, zusätzlichen Joins für „sprechende“
Attribute notwendig
sales
Product_id
Day_id
Shop_id
amount
price
localization
shop_id
region_id
country_id
continent_id
Ulf Leser: Data Warehousing und Data Mining
shop
shop_id
shop_name
region
address
region_id
manager
facilitiesname country
size
...
country_id
...
name continent
size
continent_id
...name
...
14
Variante 3: Fullfact
productgroup
year
id
pg_name
id
year
product
month
id
month
year_id
day
id
day
month_id
sales
product_id
pg_id
day_id
month_id
year_id
shop_id
region_id
amount
price
id
product_name
pg_id
shop
id
shop_name
region_id
region
id
region_name
Ulf Leser: Data Warehousing und Data Mining
15
Fullfact
• Faktentabelle
– Measures plus Fremdschlüssel jeder Klassifikationsstufe
• Dimensionstabellen
– Eine Tabelle pro Klassifikationsstufe
– Attribute: Knotenattribute und ID
– Ein Tuple pro Klassifikationsknoten
• Eigenschaften
– Normalisierte Dimensionen, denormalisierte Fakten
– Speicherverbrauch
((d * k + f )* m + d * n )* b
Ein FK pro Klassifikationsstufe
Ulf Leser: Data Warehousing und Data Mining
16
Fullfact Query
SELECT
FROM
WHERE
X.shop_name, T.year, sum(amount*price)
sales S, productgroup PG, year Y, shop X
PG.pg_name=„Wasser“ AND
PG.id = S.pg_id AND
Y.id = S.year_id AND
X.id = S.shop_id
group by X.shop_name, Y.year
• 3 Joins (1 Join, wenn Shopname/Jahrname unnötig)
• Wichtiger Effekt (Vergleich zu Star Schema): DimTabs
sind kleiner in allen Klassifikationsstufen mit Level!=0
• Anzahl Joins
– Unabhängig von Länge der Aggregationspfade in der Anfrage
– Steigt linear mit der Anzahl Klassifikationsstufen in der Anfrage
Ulf Leser: Data Warehousing und Data Mining
17
Speicherverbrauch 1
Speicherplatz nach Anz. Dim., M=106, K=4
25000000
Speicher
20000000
snowflake
15000000
star
10000000
fullfact
5000000
0
3
4
5
Dimensionen
Ulf Leser: Data Warehousing und Data Mining
18
Speicherverbrauch 2
Speicherplatz nach Anz. Fakten, D=4, K=4
2000000000
Speicher
1500000000
snowflake
star
1000000000
fullfact
500000000
0
1000000
10000000
100000000
Fakten
Ulf Leser: Data Warehousing und Data Mining
19
Speicherverbrauch 3
Speicherplatz nach Anz. K-Stufen, M=106, D=4
25000000
Speicher
20000000
snowflake
15000000
star
10000000
fullfact
5000000
0
3
4
5
Klassifikationsstufen
Ulf Leser: Data Warehousing und Data Mining
20
Fazit – Speicher und Query
• Speicherverbrauch Snowflake / Star praktisch identisch
– Bedarf für Dimensionen vernachlässigbar
• Fullfact mit deutlich höherem Speicherverbrauch
– Dafür minimale Anzahl Joins (im Idealfall 0)
• Star braucht meist weniger Joins als Snowflake
• Laufzeitverhalten hängt von vielen Faktoren ab
–
–
–
–
–
Bereichs- oder Punktanfrage, Selektivität
Indexierung
Gruppierung und Aggregation
...
Aber: Joins sind tendenziell immer teuer
Ulf Leser: Data Warehousing und Data Mining
21
Inhalt dieser Vorlesung
• Relationales OLAP (ROLAP)
– Snowflake-, Star- und Fullfactschema
– Speicherplatz und Queries
– Schemavarianten
• Evolution in Daten und Dimensionen
– Änderung in den Werten
– Änderungen in der Struktur
• Beispiel: ROLAP in Oracle
• Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
22
Entartete DWH
• Anzahl Klassifikationsknoten nähert sich Anzahl Fakten
– Bsp.: Experimentelle Daten (Knoten = Gene, Werte =
Ergebnisse von Tests)
Speicherplatz nach Anz. Knoten, M=106, D=4
25000000
Speicher
20000000
snowflake
15000000
star
10000000
fullfact
5000000
0
100000
200000
300000
Klassifikationsknoten pro Dimension
Ulf Leser: Data Warehousing und Data Mining
23
Galaxy Schema
Mehrere Faktentabellen
Jahr
Monat
Tag
Lager
Produktgruppe
Produkt
Verkauf
Shop
Ulf Leser: Data Warehousing und Data Mining
Region
24
Constellation Schema
• Fact Constellation Schema = Star Schema mit eigenen
Summentabellen für prä-aggregierter Daten
• Alternative: Einbeziehung als “spezielle Fakten“ in
Faktentabelle
Summe über alle
Tage für P=2, S=130
Summe über alle
Tage und Produkte
für S=130
Verkauf
Day
Product
shop
3.99
1
2
130
14.80
1
2
130
12.98
1
4
130
16.02
1
4
130
18.79
NULL
2
130
29.00
NULL
4
130
47.79
NULL
NULL
130
Ulf Leser: Data Warehousing und Data Mining
25
Nicht-Standard Hierarchien
• Bisherige Annahmen: Jede Hierarchie
– ist balanciert: Blätter haben alle den gleichen Abstand zu Root
– hat eine feste maximale Tiefe
– ist eine Hierarchie: Jeder Knoten hat nur einen Vorgänger
Top
Top
K1
K1.1
K1.2
K2
K1.3
K2.1
K2.2
K3
K2.3
K3.1
K2
K3.2
K3.3
Top
Top
K3
K1
K1.1
K1.2
K1.3
K2.1
K2.2
K1
K1.1
Ulf Leser: Data Warehousing und Data Mining
K1.2
K2
K1.3
K2.1
K2.2
…
K2.3
26
Unbalancierte Hierarchien
• Zuordnung von Produkten zu
Hauptgruppen, Teilung großer
Shops in Abteilungen,…
• Im Snowflake Schema
Top
Shop1
Shop2
Abt1
Abt2
Abt3
– Fakten mit „Fremdschlüsseln“ in mehrere Tabellen
– Klassifikationsknoten referenzieren verschiedene Elterntabellen
– DB kann beides nicht prüfen
• Eine Lösung: Auffüllen mit Dummy-Werte
– Jeder Shop bekommt eine NULL-Abteilung
– Einführung einer NULL Produktgruppe
– Müssen vom Client bei Ausgabe unterdrückt werden
• Im Starschema: Ebenso (Auffüllen mit NULLs)
Ulf Leser: Data Warehousing und Data Mining
27
Unbeschränkt tiefe Hierarchien
Top
• Unbeschränkt lange Klassenhierarchien
K2
– Stücklisten (Teil von ...)
– Stark variierende, länderspezifische
Organisationsstrukturen
– Auch „parent-child hierarchies“ genannt
• Weder in Star noch Snowflake möglich
…
– Snowflake: Verlängerung erfordert neue Tabellen
– Star: Verlängerung erfordert neue Attribute (und viele NULLs)
• Immer: Es ist unklar, wie viele Joins man braucht, um
ein komplettes Roll-Up zu berechnen
Ulf Leser: Data Warehousing und Data Mining
28
Modellierung über Selbst-Referenzialität
sales
product_id
time_id
shop_id
amount
price
product
id
level
name
predecessor_id
• Ermöglicht beliebige Hierarchien
– Umfasst auch unbalancierte Hierarchien
• Probleme
–
–
–
–
Rekursives SQL oder Traversierung über Host-Language nötig
Keine individuellen Attribute pro Stufe
Keine Unterstützung durch SQL-OLAP
Eingeschränkte referenzielle Integrität
– product_id könnte auf höheren Knoten in product zeigen
Ulf Leser: Data Warehousing und Data Mining
29
Nicht-hierarchische Hierarchien
• Knoten können mehrere
Vorgänger derselben Stufe haben
• Selbst-Referenzialität reicht nicht
mehr
• Rekursive Modellierung
Top
K1
K1.1
K1.2
K2
K1.3
K2.1
K2.2
– Gleiche Nachteile wie Selbst-Referenzialität
– Zuordnung von Werten bei Gruppierung nicht klar
sales
product_id
…
product
id
…
Ulf Leser: Data Warehousing und Data Mining
edges
child_id
predecessor_id
30
K2.3
Inhalt dieser Vorlesung
• Relationales OLAP (ROLAP)
– Snowflake-, Star- und Fullfactschema
– Speicherplatz und Queries
– Schemavarianten
• Evolution in Daten und Dimensionen
– Änderung in den Werten
– Änderungen in der Struktur
• Beispiel: ROLAP in Oracle
• Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
31
Änderungen in den Dimensionen
• DWH speichern Daten über lange Zeiträume
• In langen Zeiträumen passieren oftmals Änderungen
– In den Werten (Namen / Eigenschaften von Produkten, Status
von Kunden etc.)
– In den Dimensionsstrukturen (Neue Organisationsebenen,
Zusammenfassung von Produktgruppen, Auslistung, …)
• „Alte“ Fakten sollen im „alten“ Bezugsrahmen bleiben
• Echtes, ständig vorhandenes, schwieriges Problem
• Keine Silver Bullets, nur Workarounds
Ulf Leser: Data Warehousing und Data Mining
32
„Slowly Changing“ Dimensions
• Updates bei den Klassifikationsknoten einer Hierarchie
– Gemeint sind nicht Korrekturen (Buch hätte schon immer
„gebunden“ sein sollen), sondern Änderungen (Buch wurde
bisher nur gebunden verkauft, jetzt nur noch broschiert)
– Auch Deletes und Inserts – Knoten existieren nur in Zeiträumen
(mit unterschiedlichen Werten)
• Alte Werte sollten von alten Fakten adressiert werden,
neue Werte von neuen Fakten
• Ausführen des Updates führt zu Verfälschungen
– Verkäufe eines gebundenen Buchs vor Stichtag werden plötzlich
zu Verkäufen eines broschierten Buchs
• Lösung: Daten versionieren
Ulf Leser: Data Warehousing und Data Mining
33
Versionierungsmodelle
Linear
Hierarchisch
V1
V1
V2
V3
• Zu jeden Zeitpunkt
existiert von jedem
Tupel nur eine Version
• Standardmodell
Ulf Leser: Data Warehousing und Data Mining
V2
V3
V4
V5
V6
V7
• Zeitliche Reihenfolge
halbgeordnet
• z.B. in CVS
• Deutlich komplexer
34
Versionen im relationalen Modell
• RDBMS soll Versionen auf Tupelebene verwalten
– Änderung in einem Attribut – eine neue Version
– Änderungen in mehreren Attributen – eine neue Version
– Keine Schemaänderungen
• Anforderungen
– (Schneller) Zugriff auf aktuelle Version
– Zugriff auf Version zu beliebigem Zeitpunkt d0
• Zwei prominente Varianten
– Single-Table
– Schattentabellen
Ulf Leser: Data Warehousing und Data Mining
35
Variante 1: Single-Table
• Erweiterung jeder Tabelle T um die folgenden Attribute
–
–
–
–
Versionsnummer
ALIVE
VALIDFROM
Schlüsselveränderung id → (id, version)
product
product_id
name
packungsgröße
farbe
gewicht
Ulf Leser: Data Warehousing und Data Mining
product
product_id
version
alive
validfrom
name
packungsgröße
farbe
gewicht
36
INSERT
• INSERT Objekt k in T
– Gibt es k schon in T?
– Nein
• INSERT INTO T VALUES (id=k, version=0, alive=true,
validfrom=SYSDATE, …)
– Ja
• Letzte Version von k in T finden (v‘)
• k.v‘.alive=true ?
– Ja
» Fehlermeldung
– Nein
» INSERT INTO T VALUES (id=k, version=v‘+1, alive=true,
validfrom=SYSDATE, …)
Ulf Leser: Data Warehousing und Data Mining
37
DELETE
• DELETE Objekt k aus T
– Gibt es k schon in T?
– Nein
• Nichts tun
– Ja
• Letzte Version von k in T finden (v‘)
• k.v‘.alive=true?
– Ja
» INSERT INTO T VALUES (id=k, version=v‘+1, alive=false,
validfrom=SYSDATE, …)
» UPDATE T SET alive=false WHERE (id, version) = (k, v‘)
– Nein
» Nichts tun
Ulf Leser: Data Warehousing und Data Mining
38
UPDATE
• UPDATE Objekt k in T
– k in T vorhanden?
– Nein
• Nichts tun
– Ja
• Letzte Version von k in T finden (v‘)
• k.v‘.alive=true?
– Ja
» INSERT INTO T VALUES (id=k, version=v‘+1, alive=true,
validfrom=SYSDATE, …)
» UPDATE T SET alive=false WHERE (id, version) = (k, v‘)
– Nein
» Nichts tun
Ulf Leser: Data Warehousing und Data Mining
39
SELECT
• SELECT aktuellste Version von k
SELECT * FROM T
WHERE alive=true AND id=k;
• SELECT aktueller Zustand von T
SELECT * FROM T
WHERE alive=true;
• SELECT alle Tupel gültig zum Zeitpunkt d
SELECT * FROM T
WHERE validfrom = (SELECT MAX(validfrom)
FROM T1
WHERE T.id=T1.id AND
T2.validfrom <= d);
Vorsicht: Gelöschte Tupel werden
nicht korrekt behandelt
Ulf Leser: Data Warehousing und Data Mining
40
Bewertung
• Bewertung
– INSERT / DELETE / UPDATE erfordern Trigger
– Version/alive sollte in praktisch alle Indexe aufgenommen
werden
– Relativ schneller Zugriff auf aktuellste Version
• alive hat nur zwei Werte; schlechte Selektivität, also meist Scan
– Nur bei sehr vielen Änderungen steigt Selektivität und Index lohnt sich
• Tendenziell Verlangsamung durch wachsende Tabelle
– Schwierige Rekonstruktion alter Datenbestände
• Varianten
– Versionsnummer weglassen (Datum reicht eigentlich)
– VALIDFROM und VALIDUNTIL verwenden
• Einfachere Rekonstruktion, mehr Speicherplatz
Ulf Leser: Data Warehousing und Data Mining
41
Variante 2: Schattentabellen
• Anlegen einer Tabelle Ts pro Tabelle T
– Alle Attribute auf T plus
• Versionsnummer version
• validfrom und validuntil
– Schlüsselveränderung id → (id, version)
• Außerdem: T um Attribut validfrom erweitern
• TS speichert alte Versionen
• T speichert nur aktuellste Version
Ulf Leser: Data Warehousing und Data Mining
42
INSERT
• INSERT Objekt k in T
– k in T vorhanden ?
• Nein
– INSERT INTO T VALUES (id=k, validfrom=SYSDATE, …)
• Ja
– Fehlermeldung
Ulf Leser: Data Warehousing und Data Mining
43
Variante 2: DELETE
• DELETE Objekt k aus T
– k in T vorhanden ?
– Nein
• Nichts tun
– Ja
• Letzte Version von k in TS suchen (v‘)
• v‘ existiert nicht
– INSERT INTO TS VALUES (id=k, version=0, validuntil=SYSDATE, …)
• v‘ existiert
– INSERT INTO TS VALUES (id=k, version=v‘+1, validuntil=SYSDATE,
…)
• DELETE FROM T WHERE id=k
Ulf Leser: Data Warehousing und Data Mining
44
UPDATE
• UPDATE Objekt k in T
– k in T vorhanden?
– Nein
• Nichts tun
– Ja
• Letzte Version von k in TS finden (v‘)
• v‘ existiert nicht
– INSERT INTO TS VALUES( id=k, version=0, validuntil=SYSDATE, …)
• v‘ existiert
– INSERT INTO TS VALUES( id=k, version=v‘+1, validuntil=SYSDATE,
…)
• UPDATE T SET validfrom=SYSDATE, … WHERE id=k
Ulf Leser: Data Warehousing und Data Mining
45
SELECT
• SELECT aktuellste Version von k
SELECT * FROM T
WHERE id=k;
• SELECT aktueller Zustand von T
SELECT * FROM T;
• SELECT alle Tupel gültig zum Zeitpunkt d
– Kompliziert ....
• Alle k in T mit validfrom≤d nehmen
• Von allen anderen k: Wert von TS nehmen mit max(validuntil), aber
kleiner d
– Erfordert Zugriff auf T und TS
Ulf Leser: Data Warehousing und Data Mining
46
Bewertung
• Bewertung
– INSERT / DELETE / UPDATE erfordern Trigger
– Sehr schneller Zugriff auf aktuellste Version
• Kein Unterschied zu nicht-versioniert
– Komplexer Zugriff auf Zustand zu Zeitpunkt d
– Komplizierteres INSERT /DELETE / UPDATE
• Meistens zwei Tabellen betroffen
– Gut geeignet zur Archivierung (T bleibt unangetastet)
Ulf Leser: Data Warehousing und Data Mining
47
Vergleich
• Häufige Änderungen, eher wenig Lesezugriffe Variante 1
• Seltenere Änderungen, vor allem Zugriff auf aktuellste
Version – Variante 2
• Variante 2 eher für DWH geeignet
– Alle Zugriffe ohne Zeitbezug laufen ohne Änderungen
• Vorsicht vor unvorhergesehenen Effekten
(Indexdegradierung, Tabellenfragmentierung, etc.)
• Vorsicht vor Referenzen / Fremdschlüssel auf
versionierte Objekte
– Hier gibt es weitere implizite Integritätsconstraints
Ulf Leser: Data Warehousing und Data Mining
48
Inhalt dieser Vorlesung
• Relationales OLAP (ROLAP)
• Sich ändernde Dimensionen
– Änderung in den Werten
– Änderungen in der Struktur
• Beispiel: ROLAP in Oracle
• Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
49
Änderungen in Klassifikationshierarchie
• Auch Dimensionen verändern sich
• Mögliche Operationen
– Gelöschte / neue Klassifikationsknoten
– Gelöschte / neue Klassifikationsstufen
– Neue Dimensionen
• Aufwand für Operationen abhängig von Modellierung
• Im folgenden: Vier Operationen
Ulf Leser: Data Warehousing und Data Mining
50
Änderung: InsN
Einfügen eines neuen Klassifikationsknoten ohne
Nachkommen in einen Pfad auf Level i≠0
Top
Level 2
K1
Level 1
Level 0
K1.1
K1.2
K2
K1.3
Ulf Leser: Data Warehousing und Data Mining
K2.1
K2.2
K3
K2.3
K3.1
K4
K3.2
K3.3
51
Änderung: InsS
Einfügen einer neuen Klassifikationsstufe in einen Pfad
zwischen Level i und i-1 (i>1) mit 3(k+1)-i
Klassifikationsknoten mit Umhängen Knoten auf Level i-1
Level 3
Top
Level 2
K1
K2
K3
Level 1
K1.1
K1.2
K1.3
K2.1
K2.2
K2.3
K3.1
K3.2
K3.3
Level 0
K1.1
K1.2
K1.3
K2.1
K2.2
K2.3
K3.1
K3.2
K3.3
Ulf Leser: Data Warehousing und Data Mining
52
Änderung: DelN
Löschen eines Klassifikationsknoten in einem Pfad an
Level i≠0; Umhängen der Nachkommen auf beliebigen
anderen Knoten desselben Levels
Top
Level 2
K1
Level 1
Level 0
K1.1
K1.2
K2
K1.3
Ulf Leser: Data Warehousing und Data Mining
K2.1
K2.2
K3
K2.3
K3.1
K3.2
K3.3
53
Änderung: DelN0
Löschen eines Klassifikationsknoten in einem Pfad an
Level i=0; Umhängen der Fakten auf andere Knoten mit
Level 0
Top
Level 2
K1
Level 1
Level 0
K1.1
K1.2
K2
K1.3
Fakten
Ulf Leser: Data Warehousing und Data Mining
...
K2.1
K2.2
...
K3
K2.3
K3.1
...
K3.2
K3.3
...
54
Änderungskosten
Padding: NULL in Knoten mit Level j<i
Snowflake
Star
Fullfact
InsN
1 Insert
(1 Insert)
1 Insert
InsS
1 neue Tabelle,
3(k+1)-i Updates
(Umhängung)
1 neues Attribut,
3k Updates
(Wert des Attrib.)
1 neue Tabelle,
1 neues Attribut,
m Updates
(in Faktentabelle)
DelN
1 Delete,
3 Update
0 Delete,
3 Update
1 Delete,
m/3k-i Updates
(Level i: 3k-i Knoten)
DelN0
1 Delete,
m/3k Update
1 Delete,
m/3k Update
1 Delete,
m/3k Updates
Ulf Leser: Data Warehousing und Data Mining
55
Versionierung in Oracle
• Oracle Flashback (lineare Versionierung)
– Rücksetzen der Datenbank auf Status zu Zeitpunkt X
– Flashback-Queries (AS OF): Zugriff auf Daten zu Zeitpunkt X
– Änderungen werden gepuffert; UNDO-Buffergröße bestimmt
maximalen zeitlichen Abstand
– DDL Operationen zerstören UNDO Informationen
– Umsetzung tief im System, schnell, transparente Nutzung
• Workspace Manager (hierarchische Versionierung)
– Auf Tabellenebene (funktioniert mit einer Art Schattentabelle)
– Benutzung für WHAT-IF, oder versuchsweise große Änderungen
(ohne TX) mit anschliessendem MERGE
– Div. Einschränkungen bei Constraints, Trigger, etc.
– Umsetzung in PL/SQL Packages, eher langsam
Ulf Leser: Data Warehousing und Data Mining
56
Inhalt dieser Vorlesung
•
•
•
•
Relationales OLAP (ROLAP)
Evolution in Daten und Dimensionen
Beispiel: ROLAP in Oracle
Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
57
MDDM Konstrukte in Oracle
• Oracle Sprachelemente
– Dimensionen
– Klassifikationsstufen
– Klassifikationspfade
• Definition mit eigenen DDL Befehlen
• Setzen auf existierendes relationales Schema auf
– Star oder Snowflake
Ulf Leser: Data Warehousing und Data Mining
58
Beispiel: Snowflake Schema
sales
product_id
day_id
shop_id
amount
price
product
id
product_name
pg_id
productgroup
id
pg_name
CREATE DIMENSION s_pg
LEVEL product IS (product.id)
LEVEL productgroup IS (productgroup.id)
HIERARCHY pg_rollup (
product CHILD OF productgroup
JOIN KEY (pg_id)
REFERENCES productgroup
);
Ulf Leser: Data Warehousing und Data Mining
59
Beispiel: Star Schema
time
day_id
day
month_id
month
year_id
year
sales
product_id
day_id
shop_id
amount
price
1. Name eines Levels
2. Name eines Attributes
CREATE DIMENSION s_time
LEVEL day IS (time.day_id)
LEVEL month IS (time.month_id)
LEVEL year IS (time.year_id)
HIERARCHY pg_rollup (
day CHILD OF
month CHILD OF
year)
ATTRIBUTE day_id DETERMINES (day)
ATTRIBUTE month_id DETERMINES (month)
ATTRIBUTE year_id DETERMINES (year)
Ulf Leser: Data Warehousing und Data Mining
Ref. IC innerhalb
einer Tabelle
60
Multiple Pfade
Dimension
CREATE DIMENSION times_dim
LEVEL day IS TIMES.TIME_ID
LEVEL month IS TIMES.CALENDAR_MONTH_DESC
LEVEL quarter IS TIMES.CALENDAR_QUARTER_DESC
Klassifikationsstufen LEVEL year IS TIMES.CALENDAR_YEAR
LEVEL fis_week IS TIMES.WEEK_ENDING_DAY
LEVEL fis_month IS TIMES.FISCAL_MONTH_DESC
LEVEL fis_quarter IS TIMES.FISCAL_QUARTER_DESC
LEVEL fis_year IS TIMES.FISCAL_YEAR
HIERARCHY cal_rollup (
day CHILD OF
CHILD OF
Klassifikationspfad 1 month
quarter CHILD OF
year )
HIERARCHY fis_rollup (
day CHILD OF
CHILD OF
Klassifikationspfad 2 fis_week
fis_month CHILD OF
fis_quarter CHILD OF
fis_year )
<attribute determination clauses>...
Ulf Leser: Data Warehousing und Data Mining
61
Eigenschaften
• Vollständige und überlappungsfreie Hierarchien
– „The child_key_columns must be non-null and the parent key must be unique
and non-null. You need not define constraints to enforce these conditions,
but queries may return incorrect results if these conditions are not true.“
– „.. the joins between the dimension tables can guarantee that each child-side
row joins with one and only one parent-side row. In the case of denormalized
dimensions, determine whether the child-side columns uniquely determine
the parent-side (or attribute) columns. If you use constraints to represent
these relationships, they can be enabled with the NOVALIDATE and RELY
clauses if the relationships represented by the constraints are guaranteed by
other means.„
• Verwendung und Anzeige über PL/SQL Packages
– DEMO_DIM, DBMS_OLAP,…
• Sinn
– Für Query Rewrite (siehe „Materialisierte Sichten“)
– Für Client-Software / Visualisierung / Navigation
Ulf Leser: Data Warehousing und Data Mining
62
Inhalt dieser Vorlesung
•
•
•
•
Relationales OLAP (ROLAP)
Evolution in Daten und Dimensionen
Beispiel: ROLAP in Oracle
Multidimensionales OLAP (MOLAP)
Ulf Leser: Data Warehousing und Data Mining
63
Multidimensionales OLAP
• Grundidee: Speicherung multidimensionaler Daten in
multidimensionalen Arrays
• Tendenziell gibt das Probleme
– Range-Queries, Einbeziehung prä-aggregierter Daten
– Wenn Daten nicht in Hauptspeicher passen
– Siehe auch multidimensionale Indexstrukturen (später)
• Dafür rasend schnell für „passende“ Zugriffsmuster
• Im folgenden: Ein Würfel, ein Fakt
Ulf Leser: Data Warehousing und Data Mining
64
Klassifikationshierarchien
1999
2000
Modellierung als eingebettete Knoten der untersten Stufe
Jahr
Jahr
Q3
Q2
Q2
Q1
Q1
1999
Q4
Q4
Q3
Q3
Q2
Q2
Q1
Q1
Ulf Leser: Data Warehousing und Data Mining
65
Array Adressierung
• Sei di=|Di|, d Dimensionen,
• b: Speicherplatz pro Attribut (Key oder Wert)
• Linearisierte Darstellung
– <1,1,1>, <1,1,2>, ... , <1,1,d1>, <1,2,1>, ...
• Offset der Zelle <a1,...ad>
i −1


b * ∑  (ai − 1) * ∏ d j 
i =1 
j =1

d
Ulf Leser: Data Warehousing und Data Mining
66
Arrayspeicherung - Probleme
• Naive MOLAP: Unterschiedliche Performanz je nach
Reihenfolge der Dimensionen in Array / Anfrage
– Daten liegen nach Dn geordnet auf Platte
– Zugriff auf <2,2,X> - sequentieller Read
– Zugriff auf <X,1,3> oder <3,X,3> - Zugriff auf viele Blöcke
• Aber: RDBMS hat ähnliche Probleme
– Zugriff abhängig von Anordnung der Tupel auf der Platte
– Forschung: „Column stores“
• Problem: Speicherung verschiedener Werte pro Zelle
– Mehrere Verkäufe von „CocaCola“ an einem Tag in einem Shop?
– Auflösung durch Listen etc.
Ulf Leser: Data Warehousing und Data Mining
67
Speicherverbrauch
Array
Relational
(Star Schema)
Speicherung
Koordinaten
Implizit
(Linearisierung)
Explizit
(redundant)
Leere Zellen
Belegen Platz
Belegen keinen Platz
Komplette Reorganisation
Stark wachsender Speicher
Neue Zeile in Dim-tabelle
Kaum Speicherwachstum
Neue Klassifik.knoten
Speicherverbrauch
d
b * ∏ di
b * m * (d + 1)
i =1
(plus Listen bei mehreren
Fakten pro Koordinate)
Typisches
Zugriffsmuster
Sequentiell
Ulf Leser: Data Warehousing und Data Mining
Random Access
68
Vergleich Speicherplatz
Speicherplatz nach Füllgrad, b=8, k=100, d=5
• Parameter:
Füllgrad, k, d
• Schon bei kleinen
Füllgraden ist Array
platzeffizienter
• Tatsächlicher Füllgrad
oft klein, wenn viele
Dims / Knoten
– Bei weitem nicht alle
Kombinationen finden
sich in den Daten
500000000
400000000
300000000
Array
200000000
Relational
100000000
0
10 20 30 40 50 60 70 80 90 100
Füllgrad in %
Speicherplatz nach Füllgrad, b=8, k=20, d=3
300000
250000
200000
150000
Array
100000
Relational
50000
0
10 20 30 40 50 60 70 80 90 100
Füllgrad in %
Ulf Leser: Data Warehousing und Data Mining
69
Sparse Matrices
• Viele Dimensionen und Klassifikationsknoten
– Dünn besetzte Matrizen, geringer Füllungsgrad
– Ineffiziente Speicherplatznutzung
– Überflüssiges I/O (Auch NULLs müssen gelesen werden)
• Abhilfe: Komprimierung
– Run-Length Encoding (RLE): Schlecht indizierbar
– 2-Ebenen Speicherung
• Ebene 1: Array mit dünn besetzten Dimensionen
• Ebene 2: Arrays mit dicht besetzten Dimensionen
• Gewinn: Viele Ebene 2 Blöcke leer – weglassen
– Siehe multidimensionale Indexstrukturen (später)
Ulf Leser: Data Warehousing und Data Mining
70
Fazit MOLAP
• Kein Standard vorhanden, proprietäre Produkte
• Volksmeinung
– Prinzipiell schneller
– Gut für aggregierte Daten (keine Listen etc.)
– Schlechte Skalierbarkeit, wenn der Hauptspeicher ausgeht
• Typischer Einsatz
– (Regelmäßige) Snapshots des (ROLAP) Cubes auf Client in
MOLAP Datenbank laden
– Vorberechnung aller Aggregate
– Read-Only
– Verwendung für schnelle, intuitive User-Interfaces
• Real-Time OLAP
Ulf Leser: Data Warehousing und Data Mining
71
Herunterladen