10.1¨Uberblick

Werbung
10 Data Warehousing
10.1
Überblick
➢ In klassischen“ Datenbankanwendungen werden Datenbanken im wesentlichen zur
”
Abwicklung des ( operativen“) Tagesgeschäfts verwendet (z.B.: Buchungen, Einkauf/Verkauf,
”
Personal, . . .)
❏ Operationen (Transaktionsprogramme) auf diesen Datenbanken typischerweise mit Zugriff
auf kleine Datenmengen (z.B. Direktzugriff über Kontonummern), Durchführung weniger
Änderungsoperationen bzw. kleiner“ Lesetransaktionen
”
❏ Anforderungen: hoher Transaktionsdurchsatz (mehrere Hundert bis Tausend Transaktionen
pro Sekunde!)
⇒ online transaction processing (OLTP)“
”
➢ Neue, zusätzliche Anwendungsgebiete für große Informationssysteme:
❏ Management-Informationssysteme
❏ Decision-Support
❏ Integration mehrerer operativer Datenbanken
❏ Hier sollen die vorhandenen Daten verdichtet werden, um globalere Zusammenhänge zu
erkennen
❏ Anforderungen: große komplexe Anfragen mit hohem Aggregationsgrad, wenig oder keine
Änderungen
⇒ online analytical processing (OLAP)“
”
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-1
➢ Typische Aspekte:
❏ Große operative Datenbank (> 1 TByte)
❏ Gewünschte Anfragen stellen Daten stark verdichtet aggregiert dar:
✧ relativ teuer
✧ können nicht parallel zum laufenden Betrieb gestellt werden.
✧ sollen unterschiedliche Präzisierungsgrade ermöglichen.
❏ Aus der operativen Datenbank werden regelmässig (etwa 1x täglich oder 1x monatlich)
Daten in eine zweite (wesentlich kleinere) Datenbank, dem Data Warehouse übertragen.
Das Data Warehouse steht dann für beliebige Anfragen zur Verfügung. Gegebenenfalls
wird das Data Warehouse in weitere Komponenten unterteilt, den sog. Data Marts.
OLTP
Online Transaction
Processing
OLAP
Online Analytical
Processing
Decision Support-Anfragen
Data Mining
operationale DB
operationale DB
Data
Warehouse
operationale DB
operationale DB
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-2
➢ Datenbankarchitektur: Ein Data Warehouse enthält üblicherweise zwei Arten von
Informationen:
❏ eine Faktentabelle:
✧ Diese enthält pro Tupel einen einzelnen Geschäftsvorfall (einen Verkauf, einen
Vertragsabschluß, einen Auftrag, . . .)
✧ enthält jeweils Fremdschlüssel der beteiligten Dimensionen sowie weitere Informationen
❏ verschiedene Dimensionen: Jede Dimension beschreibt einen zentralen Aspekt für das
Data Warehouse. Übliche Dimensionen sind: Lieferant, Produkt, Zeit, Region, Filiale,. . .
➢ Ein wesentliches Problem ist etwa die adäquate Modellierung der Dimensionen
❏ Auftretende Probleme:
✧ Dimensionen haben eine hierarchische Gliederungsstruktur:
– Region: Kontinent – Land – Bundesland – Stadt – Straße
– Zeit: Jahr – Monat– Tag
✧ Manche Dimensionen haben mehrere nicht-kompatible Strukturen:
– Jahr – Monat– Tag
– Jahr – Woche – Tag
❏ Dimensionsstrukturen können sich über die Zeit verändern, wenn sich das Anwendungsfeld
verändert ⇒ Anpassung alter Daten/Dimensionsinformation problematisch!
➢ Üblicherweise werden Anfragen an die Fakten-Tabelle im Zusammenhang mit einer oder
mehreren Dimensionen gestellt (mehrfache Joins).
➢ Diese Anfragen enthalten oft Aggregierungen und sind nach den Dimensionen strukturiert
⇒ Multidimensionale Anfragen
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-3
➢ Beispiel:
Abbildung 10-1: Multidimensionale Anfragen
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-4
➢ Datenwürfel ( Cube“): Strukturierte Darstellung der vorhandenen Informationen:
”
Hersteller
Jahr
Abbildung 10-2: Ein Datenwürfel
➢ Übliche Variationen:
❏ Hinzunahme/Wegnahme von Dimensionen: Steuerung durch group by-Klausel
❏ Verfeinerung von Dimensionen
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-5
➢ Da die spezielle Struktur eines Data Warehouse nur unzureichend von relationalen
Datenbanken unterstützt wird, werden bei der Entwicklung adäquater Systeme insbesondere
folgende Entwicklungslinien verfolgt:
❏ ROLAP: Das Data-Warehouse-System wird auf Basis von eines relationalen DBMS
realisiert.
❏ MOLAP: Die Daten werden in einer speziellen mehrdimensionalen Form gespeichert (etwa
mehrdimensionale Arrays).
➢ Gegenwärtig haben viele Datenbankhersteller den SQL-Support fürs Data Warehousing
wesentlich erweitert!
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-6
➢ Wesentliche Anforderung: Das Data Warehouse soll unterschiedlichen Mitarbeitern
und Problemstellungen gerecht werden. Deswegen werden auch unterschiedliche
Anfragewerkzeuge eingesetzt:
❏ Standard-SQL-Aggregierungen
❏ Data Mining Tools (inkl. Neuronalen Netzwerken)
❏ Statistische Analysen
❏ Expertensysteme (Frage/Antwort-Systeme)
➢ Die adäquate Aufbereitung von Dimensionsanfragen ist durchaus aufwendig und nicht
unproblematisch!
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-7
10.2
Adäquater Datenbankentwurf
➢ Dimensionstabellen sind üblicherweise nicht normalisiert, d.h. es gibt eine Faktentabelle mit
zugehörigen Dimensionstabellen. Dies nennt man auch Star-Schema“.
”
Abbildung 10-3: Ein Star-Schema
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-8
➢ Zweck:
❏ Anzahl der Joins wird kleiner.
❏ spezieller Join: star-join kann gut optimiert werden
❏ Auftretende Redundanzen oft unproblematisch, da Dimensionsdaten sich nur wenig ändern
und im wesentlichen Einfügungen enthalten.
➢ Normalisierte Dimensionen werden auch Snowflake-Schema genannt.
➢ Praktiker empfehlen üblicherweise das Starschema!
➢ ggf. weitere Variationen in bestimmten Anwendungsszenarien sinnvoll:
➢ Beispiel: Die Struktur einiger Dimensionen ändert sich sehr häufig: Hier kann es sinnvoll sein,
ggf. diese Dimension durch eine Meta-Dimension zu ersetzen.
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-9
10.3
TPC-D-Benchmark
➢ Decision-Support-Anfragen in einem hypothetischen Handelsunternehmen
➢ Zukünftig wird dieser Benchmark in zwei Benchmarks aufgeteilt (TPC-H und TPC-R).
Abbildung 10-4: Das TPC-D-Datenmodell
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-10
❏ Datenbankgröße skalierbar (SF=1,10,30,100,300,1000), dabei ergibt SF=1 ungefähr 1GB
Nutz-Daten.
❏ 19 Anfragen:
✧ aufsummierender Preisbericht
✧ Gute Lieferanten für bestimmte Teile
✧ nichtabgearbeitete Lieferungen (sortiert nach Priorität)
✧ ...
✧ Erzeugung neuer Bestellungen (SF*1500)
✧ Entfernung von überflüssigen oder überholten Informationen (ebenfalls SF*1500)
❏ Leistungsgrößen:
✧ Systempreis auf 5 Jahre
✧ TPC-D-Powermetrik QppD@Size: Anzahl der sequentiell ausgeführten Anfragen und
Änderungen pro Stunde, gewichtet mit der Skalierung
✧ Durchsatz QthD@Size: Anzahl der Anfragen und Änderungen pro Stunde bei
Parallelisierung
✧ Preis/Leistungsverhältnis (Dollar pro Anfrage pro Stunde): Hierbei wird für die Anzahl
der Anfragen pro Stunde das geometrische Mittel von QppD@Size und QthD@Size
verwendet.
❏ Gegenwärtige Werte (für eine 300-GB-Datenbank):
✧ QppD@300GB=2000, QthD@300GB=1200 bei einem Systempreis von 5 Mio $.
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-11
Beispiel: Veränderung des Marktanteils einer Nation innerhalb zweier Jahre“ (Query 8)
”
(Achtung: Hier SQL-2, nicht Oracle-SQL!)
select
o_year,
sum(case
when nation = "’ then volume
else 0
end) / sum(volume) as mkt_share
from
( select extract(year from o_orderdate) as o_year,
l_extendedprice * (1 - l_discount) as volume,
n2.n_name as nation
from
part,supplier,lineitem,orders,customer,
nation n1,nation n2,region
where
p_partkey = l_partkey
and s_suppkey = l_suppkey
and l_orderkey = o_orderkey
and o_custkey = c_custkey
and c_nationkey = n1.n_nationkey
and n1.n_regionkey = r_regionkey
and r_name = "’
and s_nationkey = n2.n_nationkey
and o_orderdate between date ’1995-01-01’ and date ’1996-12-31’
and p_type = "’
) as all_nations
group by o_year
order by o_year;
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-12
Beispiel: Bestimmng des Brutto-Umsatzes bestimmter Produkte“ (Query 19) (Typische
”
Anfrage für Data Mining-Tools)
select
from
where
sum(l_extendedprice* (1 - l_discount)) as revenue
lineitem, part
( p_partkey = l_partkey and p_brand = ’’
and p_container in (’SM CASE’, ’SM BOX’, ’SM PACK’, ’SM PKG’)
and l_quantity >= and l_quantity <= + 10
and p_size between 1 and 5
and l_shipmode in (’AIR’, ’AIR REG’)
and l_shipinstruct = ’DELIVER IN PERSON’)
or
( p_partkey = l_partkey
and p_brand = ’’
and p_container in (’MED BAG’, ’MED BOX’, ’MED PKG’, ’MED PACK’)
and l_quantity >= and l_quantity <= + 10
and p_size between 1 and 10
and l_shipmode in (’AIR’, ’AIR REG’)
and l_shipinstruct = ’DELIVER IN PERSON’)
or
( p_partkey = l_partkey and p_brand = ’’
and p_container in (’LG CASE’, ’LG BOX’, ’LG PACK’, ’LG PKG’)
and l_quantity >= and l_quantity <= + 10
and p_size between 1 and 15
and l_shipmode in (’AIR’, ’AIR REG’)
and l_shipinstruct = ’DELIVER IN PERSON’);
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-13
10.4
Oracle8i-Support für Data Warehousing
10.4.1
Erweiterte Anfrageunterstützung
In Oracle-8i können Rollup- und Cube-Anfragen direkt formuliert werden.
Beispiel:
EMP:
DEPT:
EMPNO
----7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
DEPTNO
--------10
20
30
40
JOB
MGR HIREDA
SAL
COMM
DEPTNO
--------- --------- ------ --------- --------- --------CLERK
7902 171280
800
20
SALESMAN
7698 200281
1600
300
30
SALESMAN
7698 220281
1250
500
30
MANAGER
7839 020481
2975
20
SALESMAN
7698 280981
1250
1400
30
MANAGER
7839 010581
2850
30
MANAGER
7839 090681
2450
10
ANALYST
7566 091282
3000
20
PRESIDENT
171181
5000
10
SALESMAN
7698 080981
1500
0
30
CLERK
7788 120183
1100
20
CLERK
7698 031281
950
30
ANALYST
7566 031281
3000
20
CLERK
7782 230182
1300
10
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-14
➢ Rollup-Anfragen:
select deptno,job,count(*),sum(sal)
from emp
group by rollup (deptno,job)
DEPTNO JOB
COUNT(*) SUM(SAL)
--------- --------- --------- --------10 CLERK
1
1300
10 MANAGER
1
2450
10 PRESIDENT
1
5000
10
3
8750
20 ANALYST
2
6000
20 CLERK
2
1900
20 MANAGER
1
2975
20
5
10875
30 CLERK
1
950
30 MANAGER
1
2850
30 SALESMAN
4
5600
30
6
9400
14
29025
➢ Wie sieht diese Anfrage ohne rollup aus?
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-15
➢ Bestimmung aller Werte eines Datenwürfels:
select deptno,job,sum(sal)
from emp
group by cube(deptno,job);
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
DEPTNO
-------10
10
10
10
20
20
20
20
30
30
30
30
JOB
SUM(SAL)
--------- --------CLERK
1300
MANAGER
2450
PRESIDENT
5000
8750
ANALYST
6000
CLERK
1900
MANAGER
2975
10875
CLERK
950
MANAGER
2850
SALESMAN
5600
9400
ANALYST
6000
CLERK
4150
MANAGER
8275
PRESIDENT
5000
SALESMAN
5600
29025
10-16
➢ Weitere Beispiele:
select deptno,job,count(*),sum(sal)
from emp
group by rollup (deptno,job)
having grouping(job)=1
DEPTNO JOB
COUNT(*) SUM(SAL)
--------- --------- --------- --------10
3
8750
20
5
10875
30
6
9400
14
29025
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-17
select decode(grouping(dname),1,’All Departements’,dname)
AS departement,
decode(grouping(job),1,’All Jobs’,job)
AS job,
count(*), sum(sal)
from
emp,dept
where emp.deptno=dept.deptno
group by rollup (dname,job)
DEPARTEMENT
---------------ACCOUNTING
ACCOUNTING
ACCOUNTING
ACCOUNTING
RESEARCH
RESEARCH
RESEARCH
RESEARCH
SALES
SALES
SALES
SALES
All Departements
JOB
COUNT(*) SUM(SAL)
--------- --------- --------CLERK
1
1300
MANAGER
1
2450
PRESIDENT
1
5000
All Jobs
3
8750
ANALYST
2
6000
CLERK
2
1900
MANAGER
1
2975
All Jobs
5
10875
CLERK
1
950
MANAGER
1
2850
SALESMAN
4
5600
All Jobs
6
9400
All Jobs
14
29025
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-18
➢ Top-n/Bottom-n-Anfragen:
❏ oft interessieren nur die besten/schlechtesten Ergebnisse.
❏ Derartige Anfragetypen werden von SQL nicht adäquat unterstützt.
❏ Beliebter Trick: Viele DBMSe nummerieren die Tupel in Tabellen und Anfrageergebnissen.
❏ Risiko: Fehlinterpretation der Nummerierung, Änderung der Implementierung des DBMS,
...
❏ Beispiel: Oracle 8i:
✧ Attribut rownum enthält die Nummer eines Tupels
✧ Folgende Anfrage scheitert:
select ename, sal
from
emp
where rownum < 6
order by sal desc
ENAME
SAL
---------- --------ALLEN
1600
WARD
1250
MARTIN
1250
SMITH
800
✧ In Oracle-8i wird erst rownum gesetzt und dann sortiert!
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-19
✧ Lauffähige Oracle8i-Lösungen:
–
create or replace view emp_view as
select * from emp
order by sal desc
select ename,sal
from
emp_view
where rownum < 6
– oder auch
select ename,sal
from (select * from emp order by sal desc)
where rownum < 6
– Ergebnis:
ENAME
SAL
---------- --------KING
5000
SCOTT
3000
FORD
3000
JONES
2975
BLAKE
2850
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-20
10.4.2
Datenmodellierung
➢ In Oracle-8i können Dimensionen strukturiert werden.
➢ Dies kann in Anfragen und bei der Anfrageoptimierung (Materialisierung von Anfragen)
effizient eingesetzt werden.
➢ Beispiel:
➢ Data-Warehouse-Tabellen:
❏ bundeslaender(bundeslaender code,budeslaender name)
❏ staedte(staedte code,staedte name,bundeslaender code)
❏ produkte(produkte code,produkte name,marke)
❏ verkaeufe(verkauf code,datum,betrag,produkte code,staedte code)
❏ zeit(datum,woche,monat, monats name,quartal,jahr,jahreszeit)
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-21
➢ Flexible Definition von Dimensionen:
create dimension zeit_dim
level datum is zeit.datum
level woche is zeit.woche
level monat is zeit.monat
level quartal is zeit.quartal
level jahreszeit is zeit.jahreszeit
level jahr is zeit.jahr
hierarchy kalender_rollup (
datum child of
monat child of
quartal child of
jahr)
hierarchy jahreszeit_rollup(
datum
child of
jahreszeit child of
jahr)
hierarchy wochen_rollup (
datum child of
woche child of
jahr)
attribute monat determines zeit.monats_name;
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-22
➢ Normalisierte Dimensionen:
create dimension regionen_dim
level staedte_code
is staedte.staedte_code
level staedte_name
is staedte.staedte_name
level bundeslaender_code is bundeslaender.bundeslaender_code
level bundeslaender_name is bundeslaender.bundeslaender_name
hierarchy bundeslaender_rollup (
staedte_code CHILD OF
bundeslaender_code
JOIN KEY staedte.bundeslaender_code REFERENCES bundeslaender_code)
ATTRIBUTE staedte_code determines staedte.staedte_name
ATTRIBUTE bundeslaender_code DETERMINES bundeslaender.bundeslaender_name;
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-23
10.4.3
Optimierung von Data Warehouse-Anfragen
➢ Wesentliches Problem: der Join mit den verschiedenen Dimensionen wird dauernd benötigt.
➢ Idee:
❏ Bestimmte Anfragen kommen immer wieder als Teilanfragen vor.
❏ Diese Anfragen werden als Sicht berechnet und gespeichert! (⇒ Materialized View)
❏ Darauf basierende Anfragen greifen dann nicht mehr auf die Basistabellen, sondern auf
den Materialized View zu.
❏ Dabei werden auch die in der HIERACHY-Klausel Dimensionen mitberücksichtigt!
➢ Beispiel:
create materialized view verkaeufe_summary
enable query rewrite
as select p.marke, b.bundeslaender_code, s.staedte_name, z.monat,
sum(v.betrag) as total_verkaeufe
from verkaeufe v, staedte s, zeit z, bundeslaender b, produkte p
where v.staedte_code = s.staedte_code
and s.bundeslaender_code = b.bundeslaender_code
and v.datum = z.datum
and v.produkte_code = p.produkte_code
group by p.marke, b. bundeslaender_code, s.staedte_name, z.monat;
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-24
Anfrage:
select p.marke, b.bundeslaender_name, z.jahr,
sum(v.betrag) as total_verkaeufe
from verkaeufe v, staedte s, zeit z, bundeslaender b, produkte p
where v.staedte_code = s.staedte_code
and s.bundeslaender_code = b.bundeslaender_code
and v.datum = z.datum
and v.produkte_code = p.produkte_code
group by p.marke, b. bundeslaender_name, z.jahr;
Execution Plan
-------------------------------------------------------------SELECT STATEMENT Optimizer-CHOOSE
SORT (GROUP BY)
HASH JOIN
HASH JOIN
TABLE ACCESS (FULL) OF ’BUNDESLAENDER’
TABLE ACCESS (FULL) OF ’VERKAEUFE_SUMMARY’
VIEW
SORT (UNIQUE)
TABLE ACCESS (FULL) OF ’ZEIT’
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-25
➢ Weitere Optimierungsaspekte:
❏ Spezielle Algorithmen für Star-Joins
❏ Load-Strategien fürs Data Warehouse:
Wie lädt man 1 TByte oder 20 Mio. Transaktionen in vier Stunden in das Data
Warehouse?
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-26
10.5
Weitere Fragestellungen
Im Zusammenhang mit Data Warehouses werden eine ganze Reihe weiterer aktueller
Forschungsfragen behandelt, darunter im Zusammenhang mit dem sog. ETL-Prozess“
”
(Extract–Transform–Load):
➢ (konsistente) Integration von Daten aus verschiedenen Quellen
➢ Auswahl der zu integrierenden Daten
➢ Auswahl einer gemeinsamen Darstellung (Modell)
➢ Bereinigung von Fehlern, Vervollständigung
➢ Erkennen von Änderungen in operationalen DBen
➢ (inkrementelles) Propagieren der Änderungen ins Warehouse
➢ erforderliche Meta-Daten
➢ ...
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-27
ETL-Prozess
data warehouse
Loading
data staging area
Completion
Cleaning
Integration
aux. DB
Completion
Integration
Cleaning
Transformation
Transformation
Completion
Monitoring
&
Extraction
Monitoring
&
Extraction
Monitoring
&
Extraction
operational
DB
operational
DB
operational
DB
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
rules
10-28
10.6
Literaturhinweise
Craig, R.S., J. Vivona und D. Bercovitch (1999). Microsoft Data Warehousing . Wiley.
Debevoise, T. (1999). The data warehouse method. Prentice Hall.
Inmon, W.H., K. Rudin, C. Buss und R. Sousa (1999). Data Warehouse Performance. Wiley.
Kimball, R. (1996). The data warehouse toolkit: practical techniques for building dimensional data warehouses.
Wiley.
Kisseleff, A. (1999). Oracle8i Warehousing . In: 12. DOAG, Stuttgart.
Kurz, A. (1999). Data Warehousing – Enabling Technology . mitp Verlag, Bonn.
TPC (1999). The TPC Benchmark H. http://www.tpc.org.
c M. Scholl, 2001/02 – Informationssysteme: 10. Data Warehousing
10-29
Herunterladen