Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Oracle Data Warehouse Implementierung dimensionaler Modelle Star - Modell Alfred Schlaucher, Oracle Deutschland.

Ähnliche Präsentationen


Präsentation zum Thema: "Oracle Data Warehouse Implementierung dimensionaler Modelle Star - Modell Alfred Schlaucher, Oracle Deutschland."—  Präsentation transkript:

1

2 Oracle Data Warehouse Implementierung dimensionaler Modelle Star - Modell Alfred Schlaucher, Oracle Deutschland

3 2 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

4 3 Schneller Mehr Flexibler Genauer Operativer Schneller Mehr Flexibler Genauer Operativer Umfassende Sichten auf Kunden Einheitliche Informationen standardisierte und Daten Flexible und reichhaltige Auswertestrukturen Immer kürzere Auswertezyklen Was Anwender bewegt

5 4 Alle Kundenkontaktpunkte Alle Geschäftsbeziehungen zu dem Kunden Alle historischen Daten Alle öffentlich verfügbaren Kundendaten Plus soziographische Informationen (Referenzdaten) Ergeben ein vollständiges Bild + neue Geschäftsoptionen Potentielle Informationsschätze 360°

6 5 Informationsdrehscheibe für alle (!) Sachgebiete User View Layer Enterprise Information Layer Data Integration Layer Referenzdaten Stammdaten Bewegungsdaten Data Warehouse

7 6 Informationsdrehscheibe für alle (!) Sachgebiete User View Layer Enterprise Information Layer Data Integration Layer Einheitliches Verständnis über Sachverhalte Einheitliche verbundene Stammdaten Standardisierte Kennzahlen Harmonisieren Neutrale Sicht auf alle Unternehmens- Bereiche Flexibel für alle Endebenutzer zugänglich Stammdaten Referenzdaten Bewegungsdaten Referenzdaten Stammdaten Bewegungsdaten

8 7 Alle Modellformen in einem System Umfangreichste R-Unterstützung Integriertes Data Mining Multidimensionale Speicherung als Add On zum Star Star Schema und 3 NF Analyseverfahren schon im Data Warehouse vorbereiten User View Layer Relational Würfel Mining- Struktur Oracle R Enterprise Oracle Data Miner Oracle R Enterprise Oracle Data Miner Oracle OLAP Any SQL

9 8 1. Informations- bedarfsanalyse Informationsbedürfnisse der Endanwender stehen am Anfang Auflistung aller benötigten Kennzahlen Wachsende DWH-Informationslandschaft R R B S S S D D DD Enterprise Information Layer User View Layer Data Integration Layer TTT T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten B F F F D D D D B B B B Strategische Daten Taktische Daten Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Wachsendes Informations- modell

10 9 2. Analyse- / Geschäftsobjekt- / Konzeptionelles Modell Eine zusammenhängende Auswerteschicht wird entworfen Daraus leiten sich alle Informationsobjekte in dem gesamten DWH ab. Wachsende DWH-Informationslandschaft R R B S S S D D DD Enterprise Information Layer User View Layer Data Integration Layer TTT T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten B F F F D D D D B B B B Strategische Daten Taktische Daten Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Wachsendes Informations- modell

11 10 3. Das DWH wächst Nach und nach entsteht ein unternehmensweit reichendes zusammenhängendes Informationmodell (Enterprise Layer) Wachsende DWH-Informationslandschaft R R B S S S D D DD Enterprise Information Layer User View Layer Data Integration Layer TTT T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten B F F F D D D D B B B B Strategische Daten Taktische Daten Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Wachsendes Informations- modell

12 11 Exemplarische Fragestellungen der Anwender Umsatz_Pro_Produkt_Segment Top 3 Produkte pro Segment Verhältnis von Handelsware zu Vermittlungsdiensten Personalaufwand / Investition pro Segement Kennzahlen aus dem Vertrieb Umsatz_Verhältnis: Privat-/Firmenkunde Verhältnis von Umsatz mit und ohne Kundenkarte Umsatz pro spezifischem Kundensegment Berufsgruppe Altersgruppe Gehaltsgruppe Umsatz pro Produkt- und Kundensegment Kennzahlen aus dem Marketing Abgleich zwischen Einkaufs- und Verkaufszahlen Kennzahlen aus dem Controlling Abgleich zwischen Bestell- und Liefervorgängen Kennzahlen aus der Buchhaltung

13 12 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

14 13 Datenarten Referenzdaten Stammdaten Bewegungsdaten Fakten Dimensionen Das physische Modell - Betrachtungshorizont Enterprise Information Layer User View Layer

15 14 Durchgängige Schichten Verbundmodelle Zusätzliche Referenzdaten Schnelligkeit bei der Aufbereitung der Daten Flexibles Informationsangebot + Schnelligkeit RRSSS Enterprise Information Layer User View Layer D D DD F F D D D D F F F B B B B B D RRSSS Zusammenhängender Abfragebereich Schichten-übergreifender Abfragebereich D Selbstpflegendes Kennzahlensystem MJ A C A Q L D B schafft Schnelligkeit schafft Flexibilität A A A A A A

16 15 Namensvergaben hilft bei der Orientierung Prefixe für die unterschiedlichen Datenarten – Fakten->F_ – Dimensionen->D_ – Referenzdaten ->R_ – Stammdaten->S_ – Temporäre Daten->tmp_ – Bewegungsdaten->B_ Suffixe für die unterschiedlichen Feld-Arten – PK_/Schlüsselfelder ->_ID – FK- Felder->_ID (gleiche Namen wie PK-Fleder) – Allgemeine Nummerierungen / Zählfelder ->_NR – Datumsfelder->_Dat / _Datum Ziel: Die Wartbarkeit des Modells

17 16 Kunden_Wohnart_Nr Information zu einem Kunden wird beschrieben Die Art und Weise, wie ein Kunde wohnt wird beschrieben unter- schiedliche Wohnungs- arten sind durch- nummeriert Hauptwort Eigenschafts- benennung Basistyp BezugsobjektBeschreibende Information Charakter des Attributes Wortstammanalyse hilft bei der Klassifizierung von Column-Namen

18 17 Basistypgruppe Feldyp und Art des Wertes Rolle in Ab-hängigkeits- be-ziehung Sind NULLs erlaubt Muss Eindeutigkeit vorliegen Identifikatoren und bezeichnende Begriffe meist numerischLHSneinja Beschreibungen, Erzählungen, Texte meist Text, beliebige Zeichen RHSjanein Klassifikatorenalphanumerisch, in Bezug setzende Begriffe, oft wenige Werte RHSeher nicht, eine Klassifizierung sollte für alle Sätze gelten nein Zuständemeist Text, beliebige Zeichen RHSeher nicht, denn Zustände sollten für alle Sätze gelten, nein ZeitenDate / TimeRHSjanein Sequenzen, Aufzählungen Zählwerte) meist numerisch, oft versteckte Schlüsselkandidaten LHS nein ja

19 18 Mengenmeist numerisch, einfache Zahlenwerte ohne weitere Angaben RHSnein, wenn etwas gezählt wird, sollte es immer gezählt warden ja Operatoren und abgeleitete Größen meist Text, beliebige Zeichen RHSneinja Werte (brauchen i. d. R. eine relativierende Bezugsgröße z. B. Preis -> Währung) meist numerisch, einfache Zahlenwerte ohne weitere Angaben (brauchen i. d. R. eine relativierende Bezugsgröße z. B. Preis -> Währung) RHSneinja Maße, Bezugsgrößen, Einheiten meist Text, beliebige Zeichen RHSneinja

20 19 select substr(table_name,1,20) Tab, substr(column_name,1,20) Col, substr(data_type,1,8)Typ, substr(data_length,1,3) Len From dba_tab_columns WHERE owner = 'SV' and (table_name like 'F_%' or table_name like 'D_%') order by col / select substr(table_name,1,20) Tab, substr(column_name,1,20) Col, substr(data_type,1,8)Typ, substr(data_length,1,3) Len From dba_tab_columns WHERE owner = 'SV' and (table_name like 'F_%' or table_name like 'D_%') order by col / Über alle Tabellen Alphabetisch sortiert nach Spaltennamen Hilft beim Erkennen von Homonymen und Synonymen Hilft bei der Bewertung der Tauglichkeit von Spaltennamen Erlaubt Vorahnungen von Schlüsselkandidaten Hilfsmittel Feldliste

21 20 Die Feldliste (Beispiel) TAB COL TYP LEN D_FILIALEN ALLE_FILIALEN VARCHAR2 20 D_KUNDE ALLE_KUNDEN VARCHAR2 20 D_LAGER ALLE_LAGER VARCHAR2 40 D_MITARBEITER ALLE_MA VARCHAR2 10 D_REGION ALLE_ORTE CHAR 9 D_PRODUKT ALLE_PRODUKTE VARCHAR2 50 D_ZEIT ALLE_ZEITEN CHAR 11 D_KUNDE ANREDE VARCHAR2 10 D_SPEDITEUR ANZ_FAHRZEUGE NUMBER 22 D_KUNDE ANZ_KINDER VARCHAR2 5 D_ARTIKEL ARTIKEL_ID NUMBER 22 D_ARTIKEL ARTIKEL_NAME VARCHAR2 50 D_KUNDE BERUFSGRUPPE VARCHAR2 30 D_KUNDE BERUFSGRUPPEN_NR NUMBER 22 F_ZAHLUNGEN BEZAHLT VARCHAR2 5 F_ZAHLUNGEN_PARTITIO BEZAHLT VARCHAR2 5 D_KUNDE BILDUNG VARCHAR2 30 D_KUNDE BILDUNGS_NR NUMBER 22 D_KUNDE BRANCHE VARCHAR2 30 D_REGION BUNDESLAND VARCHAR2 255 D_LAGER BUNDESLAND VARCHAR2 50 D_LIEFERANTEN BUNDESLAND VARCHAR2 255 D_LAGER BUNDESLAND_NR NUMBER 22 D_LIEFERANTEN BUNDESLAND_NR NUMBER 22 D_REGION BUNDESLAND_NR NUMBER 22 F_POSITION DISCOUNT_PROZENT NUMBER 22

22 21 S ERVICE GmbH Die Modellfirma: S ERVICE GmbH Ursprungsgeschäft – Baumärkte Erweiterungen – Vermittlung von Handwerker-Service- Leistungen – Vermittlung von Finanzdienstleitungen rund um das Bauen – Direktes Endkundengeschäft über Internet – Lieferservice direkt ins Haus Unterscheidung – Privat- / Firmenkunden

23 22 S ERVICE GmbH Erwartungen aus dem Unternehmen Vertrieb ControllingManagement MarketingBuchhaltung Vertrieb: wünscht leichtere Auswertungen Was sind wichtige Produkte? Was sind rentable Sparten? Hat sich der Servicebereich gelohnt? Marketing: Absatzzahlen sind nicht aussagefähig Wie viel Kunden gibt es? Lohnt die Kundenkarte? Welche Segmentierung gibt es? Buchhaltung: Es fehlen Daten Warum sind die Spediteursrechnungen so hoch? Sind alle Bestellungen korrekt bezahlt worden? Wie hoch sind die Versandkosten pro Lieferung? Was wurde storniert? Controlling: Vergleichbarkeit fehlt Was sind rentable Sparten? Wie rentabel sind einzelne Produkte? Was kosten Produkte im Einkauf? Wie teuer wurden Produkte verkauft? Management: Kennzahlen fehlen Wie hoch sind die liquiden Mittel? Wie hoch sind die Außenstände? 22

24 23 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

25 24 Referenzdaten

26 25 Stammdaten

27 26 Das Auswerte- Schema

28 Das Szenario und die Mengen

29 28 Master Detail – Schlüssel: Numerische Felder Zwischen Zeit-Tabelle und Fakten-Tabelle DATE- Format FK-Constraint nicht nötig aber für den Optimizer bei Abfragen sinnvoll I.d.R. Keine PKs auf den Faktentabellen Schlüssel im Star 28 Artikelgruppe Sparte Dim_Artikel Artikel_Langtext Artikelsparte Artikel Artikel_Schlüssel Artikelgruppe_Langtext Artikelsparte_Langname Parent Fakten-FKs Fakten (Umsatz) Fakten-FKs Fakten (Umsatz) Levelschlüssel Levelschlüssel/ Objektname Levelschlüssel Business Key Künstlicher Dimension Key Dim_Schlüssel Aggregation Hierarchie Konsolidierungslevel Betrachtungslevel

30 29 PK FKs

31 30 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

32 31 Design-Prinzip - Ziel: Leichte Auswertbarkeit Verteilung der Daten in den Schichten ? RRSSS Enterprise Information Layer User View Layer D D DD F F D D D D F F F B B B B B D RRSSS Zusammenhängender Abfragebereich Schichten-übergreifender Abfragebereich D D B schafft Schnelligkeit schafft Flexibilität

33 32 Design-Prinzip - Ziel: Leichte Auswertbarkeit Verteilung der Daten in den Schichten Gleiche Daten an mehreren Stellen In unterschiedlichen Dimensionen Redundante (konvergente) Fakten- Daten Synchronisierung über Zentrale Stamm- und Referenzdaten Standardisierten ETL-Prozess RRSSS Enterprise Information Layer User View Layer D D DD F F D D D D F F F B B B B B D RRSSS Zusammenhängender Abfragebereich Schichten-übergreifender Abfragebereich D D B schafft Schnelligkeit schafft Flexibilität

34 33 Sich überschneidende Dimensionen Einzelne Attribute sind gleich Umsatz Region Bundesland Kreis Wohnort Name Kunden_NR Kunde Region Bundesland Kreis Ort Filial_Kategorie Filial_NR Filiale Artikel_NR Menge Kunden_NR Preis Filial_Nr 33

35 34

36 35

37 36 Standardisieren über einheitliche Referenzdaten Enterprise Information Layer User View Layer Referenzdaten

38 37 Master Detail – Fakten Tabellen

39 38 Die Wechselwirkung zwischen Master Detail Fakten-Tabellen

40 39 Konvergente Fakten-Felder

41 40 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

42 41 Wo und wie wird im DWH indiziert Enterprise Information Layer User View Layer Data Integration Layer Process neutral / 3 NF Keine IndexeB*tree für Eindeutigkeit und als Primary Key Bitmaps Lade-Aktivitäten Lese-Aktivitäten Bitmaps B*tree für Primary Keys In den Dimensionen Tabellen

43 42 Bitmap-Indexe auf alle Fremdschlüssel-Felder der gößeren Fakten-Tabellen (Ausnahme KAUF_ID) Bei partitionierten Fakten- Tabellen:LOCAL Index Komprimierung erfolgt automatisch Regelmäßiges Löschen und Neuanlegen der Indexe Star Query-Transformation Bitmap-Index-Definitionen in Fakten-Tabellen CREATE bitmap index idx_BM_KAUF_ZEIT_ID on F_KAUF_Partition(ZEIT_ID) local; CREATE bitmap index idx_BM_KAUF_PRODUKT_ID on F_KAUF_Partition(PRODUKT_ID) local; CREATE bitmap index idx_BM_KAUF_ORT_ID on F_KAUF_Partition(ORT_ID) local; CREATE bitmap index idx_BM_KAUF_KUNDEN_ID on F_KAUF_Partition(KUNDEN_ID) local; CREATE bitmap index idx_BM_KAUF_FILIAL_ID on F_KAUF_Partition(FILIAL_ID) local; CREATE bitmap index idx_BM_KAUF_MITARBEITER_ID on F_KAUF_Partition(MITARBEITER_ID) local; CREATE bitmap index idx_BM_KAUF_MANAGER_ID on F_KAUF_Partition(MANAGER_ID) local; CREATE bitmap index idx_BM_KAUF_FILIALLEITER_ID on F_KAUF_Partition(FILIALLEITER_ID) local;

44 43 Feststellen, für welche Spalten Indexe nötig sind Selektivität der Werte in den betroffenen Spalten Prüfen Platzverbrauch im Blick haben Regelmäßig neu machen Umgang mit Bitmap-Indexe Rowid NameAbschlussRating AAAHfVAAJAAAKOKAAA Meier Klasse_10 5 AAAHfVAAJAAAKOKAAB Schubert Abitur 5 AAAHfVAAJAAAKOKAAC Klaus-Gustav Abitur 5 AAAHfVAAJAAAKOKAAD Schmidt Diplom 5 AAAHfVAAJAAAKOKAAE Langbein Doktor 5 AAAHfVAAJAAAKOKAAF Hund Klasse_10 5 AAAHfVAAJAAAKOKAAG Vogel Abitur 5 AAAHfVAAJAAAKOKAAH Messner Abitur 5 AAAHfVAAJAAAKOKAAA AAAHfVAAJAAAKOKAAB AAAHfVAAJAAAKOKAAC AAAHfVAAJAAAKOKAAD AAAHfVAAJAAAKOKAAE AAAHfVAAJAAAKOKAAF AAAHfVAAJAAAKOKAAG AAAHfVAAJAAAKOKAAH Abschluss= Klasse_10 Abschluss= Abitur Abschluss= Diplom Abschluss= Doktor SELECT Name FROM KD_Table WHERE Abschluss=Diplom;

45 44 Platzverbrauch Bitmap-Indexe SQL> SELECT index_name,index_type blevel, (leaf_blocks*8/1000) MB, NUM_ROWS, distinct_keys FROM user_indexes; INDEX_NAME BLEVEL MB NUM_ROWS DISTINCT_KEYS IDX_BM_LIEFERUNG_KAUF_ZEIT_ID BITMAP IDX_BM_ZAHLUNGEN_ZEIT_ID BITMAP IDX_BM_ZAHLUNGEN_PRODUKT_ID BITMAP IDX_BM_ZAHLUNGEN_KUNDEN_ID BITMAP IDX_BM_ZAHLUNGEN_FILIAL_ID BITMAP IDX_BM_POSITION_ZEIT_ID BITMAP IDX_BM_POSITION_PRODUKT_ID BITMAP IDX_BM_POSITION_KUNDEN_ID BITMAP IDX_BM_POSITION_FILIAL_ID BITMAP IDX_BM_KAUF_ZEIT_ID BITMAP IDX_BM_KAUF_PRODUKT_ID BITMAP IDX_BM_KAUF_ORT_ID BITMAP IDX_BM_KAUF_KUNDEN_ID BITMAP IDX_BM_KAUF_FILIAL_ID BITMAP IDX_BM_KAUF_MITARBEITER_ID BITMAP IDX_BM_KAUF_MANAGER_ID BITMAP IDX_BM_KAUF_FILIALLEITER_ID BITMAP GB

46 45 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 0 | SELECT STATEMENT | | 1 | 106 | (1)| 00:00:01 | 1 | HASH GROUP BY | | 1 | 106 | (1)| 00:00:01 |* 2 | HASH JOIN | | 1 | 106 | (1)| 00:00:01 |* 3 | HASH JOIN | | 1 | 87 | (1)| 00:00:01 | 4 | NESTED LOOPS | | | | | | 5 | NESTED LOOPS | | 1 | 65 | (1)| 00:00:01 | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | 7 | PARTITION RANGE ALL | | | | | | 8 | BITMAP CONVERSION TO ROWIDS | | | | | |* 9 | BITMAP INDEX SINGLE VALUE | IDX_BM_KAUF_PRODUKT_ID | | | | | 10 | TABLE ACCESS BY LOCAL INDEX ROWID| F_KAUF_PARTITION | 1 | 48 | (1)| 00:00:01 | 11 | TABLE ACCESS FULL | D_ZEIT | 5479 | 117K| 12 (0)| 00:00:01 | 12 | TABLE ACCESS FULL | D_REGION | | 305K| 71 (0)| 00:00: select sum(k.gesamt_wert), p.segment, r.bundesland, z.Kalender_jahr_code from F_Kauf_PARTITION K, d_Zeit Z, d_region R, d_produkt P where to_date(K.zeit_id,'DD-MON-YY') = to_date(Z.zeit_id,'DD-MON-YY') and K.ort_id = R.ort_id and K.produkt_id = p.produkt_id group by p.segment, r.bundesland, z.Kalender_jahr_code

47 46 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

48 47 Partitioning senkt Verwaltungs-/Betriebskosten Partition- bezogene Sicht Kollektive Sicht (alle Tabellendaten) November ja nein BackupStorage günstig sehr günstig High end KomprimierungAktualisierung Statistiken Aktualisierung Index Mai Juni Juli August September Oktober ja nein ja nein In MemoryArchivierung nein ja 24/7 Online ETL-Prozess November

49 48 Partitionierung Große Tabellen (ab mehrere Millionen Sätze) Meist die Fakten-Tabellen Meist RANGE auf Zeit-Spalte Effekte bei Sub-partitionierung Range-> 70%- 80% Performance-Optimierung Welche Tabellen werden wie partitioniert

50 49 Partitioniert

51 50 Beispiel F_KAUF_PARTITION create table f_kauf_partition ( zeit_id date, Kauf_idnumber, Produkt_idnumber, ort_idnumber, Kunden_idnumber, Gesamt_Wertnumber, Gesamt_Discount_Prozentnumber, Filial_idnumber, Mitarbeiter_IDnumber, Manager_IDnumber, Filialleiter_IDnumber) PARTITION BY RANGE (ZEIT_ID) ( PARTITION jan10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION feb10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION mar10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION apr10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION mai10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION jun10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION jul10 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARTITION nov13 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION dec13 VALUES LESS THAN (TO_DATE(' ','SYYYY-MM-DD')), PARTITION next_month VALUES LESS THAN (MAXVALUE)); ;

52 51 Beispielabfrage select sum(k.gesamt_wert) Wert, p.segment segment, r.bundesland land, z.Kalender_jahr_code Jahr from F_Kauf_PARTITION K, d_Zeit Z, d_region R, d_produkt P where to_date(K.zeit_id,'DD-MON-YY') = to_date(Z.zeit_id,'DD-MON-YY') and K.ort_id = R.ort_id and K.produkt_id = p.produkt_id and Z.monat_des_Jahres = 1 and Z.KALENDER_JAHR_CODE = 2012 group by p.segment, r.bundesland, z.Kalender_jahr_code [F_Kauf K,]

53 52 Mit Partitioning Elapsed: 00:00:08.90 Execution Plan Plan hash value: | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | | 0 | SELECT STATEMENT | | 1 | 119 | (1)| 00:00:01 | | | | 1 | HASH GROUP BY | | 1 | 119 | (1)| 00:00:01 | | | |* 2 | HASH JOIN | | 1 | 119 | (1)| 00:00:01 | | | |* 3 | HASH JOIN | | 1 | 100 | (1)| 00:00:01 | | | | 4 | NESTED LOOPS | | | | | | | | | 5 | NESTED LOOPS | | 1 | 65 | (1)| 00:00:01 | | | | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | | | | 7 | PARTITION RANGE ALL | | | | | | 1 | 49 | | 8 | BITMAP CONVERSION TO ROWIDS | | | | | | | | |* 9 | BITMAP INDEX SINGLE VALUE | IDX_BM_KAUF_PRODUKT_ID | | | | | 1 | 49 | | 10 | TABLE ACCESS BY LOCAL INDEX ROWID| F_KAUF_PARTITION | 1 | 48 | (1)| 00:00:01 | 1 | 1 | |* 11 | TABLE ACCESS FULL | D_ZEIT | 31 | 1085 | 12 (0)| 00:00:01 | | | | 12 | TABLE ACCESS FULL | D_REGION | | 305K| 71 (0)| 00:00:01 | | |

54 53 Ohne Partitioning Elapsed: 00:00:30.10 Execution Plan Plan hash value: | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT | | 80 | 4960 | (2)| 00:00:01 | | 1 | HASH GROUP BY | | 80 | 4960 | (2)| 00:00:01 | |* 2 | HASH JOIN | | 154 | 9548 | (2)| 00:00:01 | | 3 | VIEW | VW_GBC_13 | 154 | 6622 | (2)| 00:00:01 | | 4 | HASH GROUP BY | | 154 | | (2)| 00:00:01 | |* 5 | HASH JOIN | | 4680K| 321M| (2)| 00:00:01 | | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | |* 7 | HASH JOIN | | 4680K| 245M| (2)| 00:00:01 | |* 8 | TABLE ACCESS FULL| D_ZEIT | 31 | 1085 | 12 (0)| 00:00:01 | | 9 | TABLE ACCESS FULL| F_KAUF | 15M| 287M| (1)| 00:00:01 | | 10 | TABLE ACCESS FULL | D_REGION | | 305K| 71 (0)| 00:00:01 |

55 54 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

56 55 Aktualität der Statistiken Skripte mit allen Partitionen Statistiken sammeln- auch für Partitioen EXEC DBMS_STATS.GATHER_TABLE_STATS ('SV','F_Kauf_partition', estimate_percent=>20, GRANULARITY => 'PARTITION'); EXEC DBMS_STATS.GATHER_TABLE_STATS ('SV','F_KAUF',estimate_percent=>20);

57 56 Storage-Bedarf Regelmäßige Kontrolle der verbrauchten Ressourcen select substr(segment_name,1,25) Segment, round((bytes/ ),2) GB,bytes, blocks,extents from user_segments where segment_type = 'TABLE and segment like F%; SEGMENT GB BYTES BLOCKS EXTENTS F_KAUF F_LIEFERUNG F_POSITION F_ZAHLUNGEN F_CHARGE F_STORNO F_EINKAEUFE F_RETOUREN

58 57 Platzverbrauch von partitionierten Tabellen TABLE_NAME SUM(NUM_ROWS) SUM(BLOCKS) GB F_KAUF_PARTITION F_LIEFERUNG_PARTITION F_POSITION_PARTITION F_ZAHLUNGEN_PARTITION SELECT table_name, sum(num_rows), sum(blocks), round(sum(((blocks*8192)/ )),2) GB FROM user_tab_partitions group by table_name order by table_name

59 58 Einfache Tabellen Partitionierte Tabellen Komprimierung alter table TMP_KAUF_POSITION move compress; ALTER TABLE F_KAUF_PARTITION MOVE PARTITION APR10 COMPRESS FOR ALL OPERATIONS NOLOGGING;

60 59 Datenmengen ohne Partitionierung VorherNachherKomp-ZeitAnz. Zeilen F_ZAHLUNGEN : TMP_KAUF_POSITION2, : F_POSITION : F_LIEFERUNG : F_KAUF :

61 60 Datenmengen mit Partitionierung Mit Part. Ohne Part NachherKomp-ZeitAnz. Zeilen F_ZAHLUNGEN TMP_KAUF_POSITION2, F_POSITION F_LIEFERUNG F_KAUF1, :

62 61 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views

63 62 Query Rewrite Transparanz: Abfragen nur auf die Original-Tabellen Flexibel: Alle Felder einer Dimensionstabelle sind abfragbar Stale: Stellt selbst fehlende Aktualität fest ETL-Effizient: Aktualisiert sich selbst Automatisches Summenmanagement Materialized Views Kreise Regionen Bundesland Fakten Tabelle Level 1 Materialized View Regionen_ID Bundesland_ID Orte Orte_ID Kreise_ID PLZ Level 2 Level 3 Level 4 Regionen Dimension

64 63 Top/Alle_Artikel Segement Artikelsparte Artikelgruppe Artikel Artikelcharge Materialized Views sparen Plattenplatz und minimieren die Objektanzahl Menge Umsatz Summe pro ChargeSumme pro ArtikelSumme pro GruppeSumme pro SparteSumme pro SegementSumme pro Charge Query Review

65 64 Nested Materialized Views nutzen bereits ausgeführte IO-Leistung Aufwendige Join-Operation DIM_ZeitFAKT_UmsatzDIM_Produkte Umsatz Prod.Gr A Umsatz Prod. Gr B relativ zum Gesamtjahresumsatz Summierung/Monat Summierung/Jahr Umsatz Prod.Gr B Basistabellen Materialized View Level 1 Materialized View Level 2 Materialized View Level 3 Materialized View Level 4 IO

66 65 Anwendung: Auswertungen über Ein-/Verkäufe Level 1: Getrennte MAVs mit Monats-Aggregat pro Produkt 1. auf Einkaufs-Fakten 2. auf Verkaufs-Fakten Level 2: Zusammenführen der Ein-/Verkaufs-Aggregation mit Mengenvergleiche und Berechnungen Level 3: Basierend auf den Mengen von Level 2 werden Finanzberechnungen gemacht Level 3: Zusätzliche Berechnungen 1. Aggregation pro Produktgruppe / Segment usw

67 66 F_EINKAEUFE F_POSITIONF_KAUF Mv_EA_Finanz_Kum_Monat Mav_Produkt_Monat_einkaeufeMav_Produkt_Monat_Verkaeufe Mav_Einkauf_Verkauf_Diff_JahrMv_EA_Menge_Kum_Monat LFD_Bestands_Wert / Produkt / Monat LFD_Saldo / Produkt / Monat Kumulierter EK / Produkt Kumulierter VK / Produkt Kumuliertes Saldo LFD_Bestands_Menge / Produkt / Monat VK_Menge / Produkt / Monat EK_Menge / Produkt / Monat Kumulierte EK Menge / Produkt Kumulierte VK Menge / Produkt Finanz-Sicht / Berechnungen Bestands-/Lager-Sicht / Berechnungen Jahres-Sicht Mv_EA_Finanz_Kum_Gruppe_Monat EA: Einkauf/Verkauf Kum: kumuliert Produktgruppen-Sicht Level 1 Level 2 Level 3 Level 4

68 67 Das Materialized View Konzept Optionen beim Anlegen Option BUILD DEFERRED Option REFRESH FORCE ON DEMAND Option ENABLE QUIRY REWRITE Sprechende Namen wählen Definition nur auf dem untersten Level der verbundenen Dimensionen Immer COUNT() in die SELECT-Definition dbms_mview.pmarker(u.rowid) – Funktion mit einbauen Dimension-Table Definitionen einbauen

69 68 Materialized View Beispiel create MATERIALIZED VIEW Mav_Zeit_Region_Produkt_kauf BUILD DEFERRED REFRESH FORCE ON DEMAND ENABLE QUERY REWRITE as select sum(k.gesamt_wert), p.Produkt_ID, r.ort_id, z.zeit_id, COUNT(*) from F_Kauf K, d_Zeit Z, d_region R, d_produkt P where K.zeit_id = Z.zeit_idand K.ort_id = R.ort_id and K.produkt_id = p.produkt_id group by p.Produkt_ID, r.ort_id, z.zeit_id

70 69 Dimension (Beispiel) CREATE DIMENSION d_produkt LEVEL ProduktISd_produkt.PRODUKT_ID LEVEL ProduktgruppeIS d_produkt.PRODUKTGRP_ID LEVEL Segmentis d_produkt.SEGMENT_ID LEVEL Vermittlungs_ArtIS d_produkt.VERMITTL_ART_ID LEVEL ProduktartISd_produkt.PRODUKTART_ID LEVEL KanalISd_produkt.KANAL_ID LEVEL Alle_Produkte IS d_produkt.ALLE_PRODUKTE HIERARCHY H_Produkt_SEGment (Produkt CHILD OF Produktgruppe CHILD OF Segment CHILD OF Produktart CHILD OF KanalCHILD OF Alle_Produkte ) HIERARCHY H_Produkt_Vermittlungs_art (Produkt CHILD OF Produktgruppe CHILD OF Vermittlungs_Art CHILD OF Produktart CHILD OF KanalCHILD OF Alle_Produkte ) ATTRIBUTE att_ProduktLEVEL ProduktDETERMINES (d_produkt.PRODUKT, d_produkt.VK_PREIS,d_produkt.PREF_LIEFER_ID) ATTRIBUTE att_Produktgruppe LEVEL ProduktgruppeDETERMINES d_produkt.PRODUKTGRUPPE ATTRIBUTE att_Segment LEVEL SegmentDETERMINES d_produkt.SEGMENT ATTRIBUTE att_Vermittlungs_ArtLEVEL Vermittlungs_ArtDETERMINES d_produkt.VERMITTL_ART ATTRIBUTE att_Vermittlungs_ArtLEVEL ProduktartDETERMINES d_produkt.PRODUKTART ATTRIBUTE att_KANALLEVEL KanalDETERMINES d_produkt.KANAL ;

71 70 Themenübersicht Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Data Warehouse Technik im Fokus Partitionierung Statistiken Storage-Bedarf Materialized Views Die Abfragen und die erreichten Kennzahlen

72 71 Select sum(kp.vk_wert) Umsatz, p.segment from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.segment; Umsatz pro Segment UMSATZ SEGMENT Erstellungsleistung Baumarktware Buergschaft Finanzgeschaeft IT-Ware Darlehensvermittlung Planungsleistung

73 72 select * from (select rank() over (partition by p.segment order by sum(kp.vk_wert) desc ) as rangfolge, p.produkt, p.segment, round(sum(kp.vk_wert),0) as umsatz from f_position_partition kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.segment,p.produkt order by p.segment) where rangfolge < 4 Top 3 Produkte pro Segment RANGFOLGE PRODUKT SEGMENT UMSATZ Universal_Wagenheber Baumarktware Bohrmaschine 800 Watt Baumarktware Duschbecken 80 Baumarktware Absicherungsbuergschaft Buergschaft Kapitalvermittlung Darlehensvermittlung Bauleitung Erstellungsleistung Elektorarbeiten Erstellungsleistung Maurerarbeiten Erstellungsleistung Investitionsdarlehen Finanzgeschaeft Hyothekendarlehen Finanzgeschaeft Kleinkredit Finanzgeschaeft GRX_GRUMOR IT-Ware SUN_AZOR_BIG IT-Ware XT_MM IT-Ware Architektenplan Planungsleistung Statikplan Planungsleistung

74 73 Select sum(kp.vk_wert) Umsatz_pro_Prod_Art, p.produktart from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.produktart Verhältnis Handelsware / Vermittlungsleistung UMSATZ_PRO_PROD_ART PRODUKTART Vermittlung Handelsware

75 74 Weitere Kennzahlen (Ausschnitt ) (Marketing) Kunden-Mengenverhältnis Privat- Kunden Firmen-Kunden Umsatz-Verhältnis Privat-Kunden Firmen-Kunden Verhältnis Umsatz mit und ohne Kundenkarte select count(status), status from d_kunde group by status; select sum(ka.GESAMT_WERT) Umsatz, kd.kundenkarte * from f_kauf ka, d_kunde kd where ka.kunden_id = kd.kunden_id group by kd.kundenkarte select round(sum(ka.VK_WERT),0) Umsatz, p.segment from f_position ka, d_Produkt P where ka.produkt_id = p.produkt_id group by p.segment * order by umsatz

76 75 Bestell- und Liefervorgäng e (Buchhaltung) SQL> select * from (select count(kauf_id) Anz_Lieferungen from f_lieferung), (select sum(Gesamt_wert) Lieferwert from f_lieferung), (select sum(Lieferkosten) Kosten_Lieferungen from f_lieferung), (select count(kauf_id) Anz_Positionen from f_position), (select count(kauf_id) Anz_Kaeufe from f_kauf), (select count(kauf_id) Anz_Lieferfreie_Kaeufe from f_kauf where produkt_id != 0), (select count(*) Anz_Stornos from (select distinct Kauf_ID, Positions_ID from f_storno)), (select sum(p.VK_Wert) Wert_Stornos from f_position p,f_storno s where p.kauf_id = s.kauf_id and p.position_id = s.positions_id) ANZ_LIEFERUNGEN LIEFERWERT KOSTEN_LIEFERUNGEN ANZ_POSITIONEN ANZ_KAEUFE ANZ_LIEFERFREIE_KAEUFE ANZ_STORNOS WERT_STORNOS ANZ_LIEFERUNGEN LIEFERWERT KOSTEN_LIEFERUNGEN ANZ_POSITIONEN ANZ_KAEUFE ANZ_LIEFERFREIE_KAEUFE ANZ_STORNOS WERT_STORNOS

77 76 Umsatz, Einkauf, Gewinn pro Produkt Controlling select a.Produkt,a.Umsatz_pro_Prod,b.einkauf_pro_Prod, (a.Umsatz_pro_Prod-b.einkauf_pro_Prod) Gewinn_pro_Prod from (select round(sum(kp.vk_wert),0) Umsatz_pro_Prod, p.produkt Produkt from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.produkt) a, (select round(sum(e.menge*e.ek_preis),0) einkauf_pro_Prod, p.produkt Produkt from f_einkaeufe e, d_produkt p where p.produkt_id = e.produkt_id group by p.produkt) b where a.produkt = b.produkt order by a.Umsatz_pro_Prod PRODUKT UMSATZ_PRO_PROD EINKAUF_PRO_PROD GEWINN_PRO_PROD Luesterklemmen 1, Muffe 15mm Reinigungstuecher Eimer_10l Sitzauflage Schrauben_M Schrauben_M Bindeseil PRODUKT UMSATZ_PRO_PROD EINKAUF_PRO_PROD GEWINN_PRO_PROD Luesterklemmen 1, Muffe 15mm Reinigungstuecher Eimer_10l Sitzauflage Schrauben_M Schrauben_M Bindeseil

78


Herunterladen ppt "Oracle Data Warehouse Implementierung dimensionaler Modelle Star - Modell Alfred Schlaucher, Oracle Deutschland."

Ähnliche Präsentationen


Google-Anzeigen