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 27 67.840.000 15.104.000 65.920.001 220.000 100024 16461 1999 5479 67.840.000 305 34 6782745 100 2996370 37 10 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 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 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 99.656 76530 76447 IDX_BM_ZAHLUNGEN_ZEIT_ID BITMAP 117.672 83538 83349 IDX_BM_ZAHLUNGEN_PRODUKT_ID BITMAP 218.72 54851 210 IDX_BM_ZAHLUNGEN_KUNDEN_ID BITMAP 116 114030 3687 IDX_BM_ZAHLUNGEN_FILIAL_ID BITMAP 70.624 17662 31 IDX_BM_POSITION_ZEIT_ID BITMAP 104.104 83375 83349 IDX_BM_POSITION_PRODUKT_ID BITMAP 186.584 46854 210 IDX_BM_POSITION_KUNDEN_ID BITMAP 105.104 113930 3687 IDX_BM_POSITION_FILIAL_ID BITMAP 61.064 15271 31 IDX_BM_KAUF_ZEIT_ID BITMAP 65.848 83352 83349 IDX_BM_KAUF_PRODUKT_ID BITMAP 8.472 2211 23 IDX_BM_KAUF_ORT_ID BITMAP 29.28 7327 31 IDX_BM_KAUF_KUNDEN_ID BITMAP 70.8 113758 3687 IDX_BM_KAUF_FILIAL_ID BITMAP 29.264 7325 31 IDX_BM_KAUF_MITARBEITER_ID BITMAP 61.352 52979 1682 IDX_BM_KAUF_MANAGER_ID BITMAP 17.736 4424 20 IDX_BM_KAUF_FILIALLEITER_ID BITMAP 9.016 2241 4 1.373392 GB

46 45 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time ----------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 106 | 15048 (1)| 00:00:01 | 1 | HASH GROUP BY | | 1 | 106 | 15048 (1)| 00:00:01 |* 2 | HASH JOIN | | 1 | 106 | 15047 (1)| 00:00:01 |* 3 | HASH JOIN | | 1 | 87 | 14975 (1)| 00:00:01 | 4 | NESTED LOOPS | | | | | | 5 | NESTED LOOPS | | 1 | 65 | 14962 (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 | 14962 (1)| 00:00:01 | 11 | TABLE ACCESS FULL | D_ZEIT | 5479 | 117K| 12 (0)| 00:00:01 | 12 | TABLE ACCESS FULL | D_REGION | 16461 | 305K| 71 (0)| 00:00:01 ---------------------------------------------------------------------------------------------------------------- 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('2010-02-01','SYYYY-MM-DD')), PARTITION feb10 VALUES LESS THAN (TO_DATE('2010-03-01','SYYYY-MM-DD')), PARTITION mar10 VALUES LESS THAN (TO_DATE('2010-04-01','SYYYY-MM-DD')), PARTITION apr10 VALUES LESS THAN (TO_DATE('2010-05-01','SYYYY-MM-DD')), PARTITION mai10 VALUES LESS THAN (TO_DATE('2010-06-01','SYYYY-MM-DD')), PARTITION jun10 VALUES LESS THAN (TO_DATE('2010-07-01','SYYYY-MM-DD')), PARTITION jul10 VALUES LESS THAN (TO_DATE('2010-08-01','SYYYY-MM-DD')), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARTITION nov13 VALUES LESS THAN (TO_DATE('2013-12-01','SYYYY-MM-DD')), PARTITION dec13 VALUES LESS THAN (TO_DATE('2014-01-01','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: 217629528 -------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | -------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 119 | 15048 (1)| 00:00:01 | | | | 1 | HASH GROUP BY | | 1 | 119 | 15048 (1)| 00:00:01 | | | |* 2 | HASH JOIN | | 1 | 119 | 15047 (1)| 00:00:01 | | | |* 3 | HASH JOIN | | 1 | 100 | 14975 (1)| 00:00:01 | | | | 4 | NESTED LOOPS | | | | | | | | | 5 | NESTED LOOPS | | 1 | 65 | 14962 (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 | 14962 (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 | 16461 | 305K| 71 (0)| 00:00:01 | | | --------------------------------------------------------------------------------------------------------------------------------

54 53 Ohne Partitioning Elapsed: 00:00:30.10 Execution Plan ---------------------------------------------------------- Plan hash value: 2124788479 ------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 80 | 4960 | 29304 (2)| 00:00:01 | | 1 | HASH GROUP BY | | 80 | 4960 | 29304 (2)| 00:00:01 | |* 2 | HASH JOIN | | 154 | 9548 | 29303 (2)| 00:00:01 | | 3 | VIEW | VW_GBC_13 | 154 | 6622 | 29231 (2)| 00:00:01 | | 4 | HASH GROUP BY | | 154 | 11088 | 29231 (2)| 00:00:01 | |* 5 | HASH JOIN | | 4680K| 321M| 29003 (2)| 00:00:01 | | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | |* 7 | HASH JOIN | | 4680K| 245M| 28974 (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| 28888 (1)| 00:00:01 | | 10 | TABLE ACCESS FULL | D_REGION | 16461 | 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/1000000000),2) GB,bytes, blocks,extents from user_segments where segment_type = 'TABLE and segment like F%; SEGMENT GB BYTES BLOCKS EXTENTS ------------------------------ ---------- ---------- ---------- ---------- F_KAUF.63 627048448 76544 146 F_LIEFERUNG 2.58 2578448384 314752 222 F_POSITION 1.95 1946157056 237568 212 F_ZAHLUNGEN 4.1 4097835008 500224 245 F_CHARGE 1.74 1744830464 212992 209 F_STORNO.25 251658240 30720 101 F_EINKAEUFE.01 12582912 1536 27 F_RETOUREN.1 100663296 12288 83

58 57 Platzverbrauch von partitionierten Tabellen TABLE_NAME SUM(NUM_ROWS) SUM(BLOCKS) GB ------------------------------ ------------- ----------- ---------- F_KAUF_PARTITION 15103875 126816 1.04 F_LIEFERUNG_PARTITION 65924495 477444 3.91 F_POSITION_PARTITION 67822775 420463 3.44 F_ZAHLUNGEN_PARTITION 67832265 802824 6.58 SELECT table_name, sum(num_rows), sum(blocks), round(sum(((blocks*8192)/1000000000)),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_ZAHLUNGEN6.444.12:23.4767.840.000 TMP_KAUF_POSITION2,551.481:45.1967.840.000 F_POSITION3.361.951:18.9267.840.000 F_LIEFERUNG3.782.581:31.5765.920.001 F_KAUF0.87 0.630:17.9515.104.000

61 60 Datenmengen mit Partitionierung Mit Part. Ohne Part NachherKomp-ZeitAnz. Zeilen F_ZAHLUNGEN6.576.446.57367.840.000 TMP_KAUF_POSITION2,5567.840.000 F_POSITION3.443.363.44467.840.000 F_LIEFERUNG3.913.783.91365.920.001 F_KAUF1,030.871.034:17.9515.104.000

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 ---------- ---------------------- 25358040 Erstellungsleistung 203098265 Baumarktware 4365920 Buergschaft 5354648 Finanzgeschaeft 80138814.9 IT-Ware 1331202 Darlehensvermittlung 44640800 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 ---------- --------------------------- ------------------------------- ---------- 1 Universal_Wagenheber Baumarktware 17361703 2 Bohrmaschine 800 Watt Baumarktware 8568086 3 Duschbecken 80 Baumarktware 7655290 1 Absicherungsbuergschaft Buergschaft 4365920 1 Kapitalvermittlung Darlehensvermittlung 1331202 1 Bauleitung Erstellungsleistung 22695550 2 Elektorarbeiten Erstellungsleistung 891822 3 Maurerarbeiten Erstellungsleistung 890588 1 Investitionsdarlehen Finanzgeschaeft 2646342 2 Hyothekendarlehen Finanzgeschaeft 2259600 3 Kleinkredit Finanzgeschaeft 448706 1 GRX_GRUMOR IT-Ware 25661311 2 SUN_AZOR_BIG IT-Ware 22529704 3 XT_MM IT-Ware 9559710 1 Architektenplan Planungsleistung 22605050 2 Statikplan Planungsleistung 22035750

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 --------------------------------------- 81050610 Vermittlung 283237080 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 --------------- ---------- ------------------ -------------- ---------- ---------------------- ----------- ------------ 5025000 1262158240 63107912 5135000 1115000 110000 2980 155510.87 ANZ_LIEFERUNGEN LIEFERWERT KOSTEN_LIEFERUNGEN ANZ_POSITIONEN ANZ_KAEUFE ANZ_LIEFERFREIE_KAEUFE ANZ_STORNOS WERT_STORNOS --------------- ---------- ------------------ -------------- ---------- ---------------------- ----------- ------------ 5025000 1262158240 63107912 5135000 1115000 110000 2980 155510.87

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,5 23281 7132 16149 Muffe 15mm 46744 12387 34357 Reinigungstuecher 46821 12802 34019 Eimer_10l 69715 19609 50106 Sitzauflage 69738 20788 48950 Schrauben_M12 69924 20750 49174 Schrauben_M9 70052 22337 47715 Bindeseil 70415 18577 51838 PRODUKT UMSATZ_PRO_PROD EINKAUF_PRO_PROD GEWINN_PRO_PROD -------------------------------------------------- --------------- ---------------- --------------- Luesterklemmen 1,5 23281 7132 16149 Muffe 15mm 46744 12387 34357 Reinigungstuecher 46821 12802 34019 Eimer_10l 69715 19609 50106 Sitzauflage 69738 20788 48950 Schrauben_M12 69924 20750 49174 Schrauben_M9 70052 22337 47715 Bindeseil 70415 18577 51838

78


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

Ähnliche Präsentationen


Google-Anzeigen