Optimierung der Datenbankstruktur einer Web-Anwendung zur Analyse von Fertigungsprozessen Vortrag Seminararbeit Fabian Ripplinger Aachen, 22.01.2014
Agenda 1 2 3 4 5 Ziel der Arbeit Grundlagen Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 3
Ziel der Arbeit Übergeordnetes Gesamtziel Performance Verbesserung der Datenbankzugriffe in WoPS+ Detaillierte Ziele Verbesserung der Performance durch: Ein anderes Datenbanksystem Eine veränderte Datenbankstruktur Geeignete Indizierung Seite 4
WoPS+ Beschreibung der Software Eingabedaten Web-Tool Auswertungen Auswertungen Simulation Konfiguration Bildquelle: http://cdn.flaticon.com/png/256/1829.png; http://cdns2.freepik.com/free-photo/slots-representing-configuration_318-9479.jpg Seite 5
Agenda 1 2 Ziel der Arbeit Grundlagen 2.1 2.2 2.3 ACID und BASE Normalisierung Indizes 3 4 5 Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 7
ACID und BASE Eigenschaften eines Datenbanksystems ACID Atomicity: Jede Transaktion wird entweder ganz oder gar nicht ausgeführt. Consistency: Die Daten sind zu jeder Zeit konsistent. Isolation: Transaktionen beeinflussen sich nicht gegenseitig. Durability: Die Daten sind garantiert dauerhaft abgespeichert. BASE Basically Available: Die Daten werden auf mehreren Systemen gespeichert. Somit ist eine Version der Daten immer erreichbar. Soft state: Daten können sich verändern, obwohl gerade kein User auf das System zugreift. Eventually Consistent: Nicht jede Version der Daten ist immer auf dem neusten Stand. Relationale DBS NoSQL-DBS Seite 8
Agenda 1 2 Ziel der Arbeit Grundlagen 2.1 2.2 2.3 ACID und BASE Normalisierung Indizes 3 4 5 Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 9
1. Normalform 1. Normalform verletzt CD_ID Albumtitel Interpret Jahr der Gründung Titelliste 4711 Not That Kind Anastacia 1999 {1. Not That Kind, 2. I m Outta Love, 3. Cowboys & Kisses} 4712 Wish You Were Here Pink Floyd 1964 {1. Shine On You Crazy Diamond} 4713 Freak of Nature Anastacia 1999 {1. Paid my Dues} 1. Normalform erfüllt CD_ID Albumtitel Interpret Jahr der Gründung Track Titel 4711 Not That Kind Anastacia 1999 1 Not That Kind 4711 Not That Kind Anastacia 1999 2 I m Outta Love 4711 Not That Kind Anastacia 1999 3 Cowboys & Kisses 4712 Wish You Were Here Pink Floyd 1964 1 Shine On You Crazy Diamond 4713 Freak of Nature Anastacia 1999 1 Paid my Dues Bedingungen: Alle Attribute sind atomar, also nicht weiter zerlegbar. Seite 10
2. Normalform 2. Normalform verletzt CD_ID Albumtitel Interpret Jahr der Gründung Track Titel 4711 Not That Kind Anastacia 1999 1 Not That Kind 4711 Not That Kind Anastacia 1999 2 I m Outta Love 4711 Not That Kind Anastacia 1999 3 Cowboys & Kisses 4712 Wish You Were Here Pink Floyd 1964 1 Shine On You Crazy Diamond 4713 Freak of Nature Anastacia 1999 1 Paid my Dues 2. Normalform erfüllt CD_ID Track Titel 4711 1 Not That Kind 4711 2 I m Outta Love 4711 3 Cowboys & Kisses 4712 1 Shine On You Crazy Diamond 4713 1 Paid my Dues CD_ID Albumtitel Interpret Jahr der Gründung 4711 Not That Kind Anastacia 1999 4712 Wish You Were Here Pink Floyd 1964 4713 Freak of Nature Anastacia 1999 Bedingungen: 1. Normalform erfüllt. Jedes Nichtschlüsselattribut ist voll funktional abhängig vom Primärschlüssel. Seite 11
3. Normalform 3. Normalform verletzt CD_ID Albumtitel Interpret Jahr der Gründung 4711 Not That Kind Anastacia 1999 4712 Wish You Were Here Pink Floyd 1964 4713 Freak of Nature Anastacia 1999 3. Normalform erfüllt Interpret_ID Interpret Jahr der Gründung 311 Anastacia 1999 312 Pink Floyd 1964 CD_ID Albumtitel Interpret_ID 4711 Not That Kind 311 4712 Wish You Were Here 312 4713 Freak of Nature 311 CD_ID Track Titel 4711 1 Not That Kind 4711 2 I m Outta Love 4711 3 Cowboys & Kisses 4712 1 Shine On You Crazy Diamond 4713 1 Paid my Dues Bedingungen: 2. Normalform erfüllt. Kein Nichtschlüsselattribut ist von einem anderen Nichtschlüsselattribut funktional abhängig. Seite 12
Agenda 1 2 Ziel der Arbeit Grundlagen 2.1 2.2 2.3 ACID und BASE Normalisierung Indizes 3 4 5 Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 13
Indizes Gruppierter Index Nur einer pro Tabelle Kann mehrere Spalten enthalten Die Reihenfolge der Spalten ist wichtig Daten werden sortiert abgelegt Nicht gruppierter Index Mehrere pro Tabelle Bezieht sich immer nur auf eine Spalte Wird getrennt von den Daten verwaltet Abgespeichert als B-Baum Indizes können die Suche und das Sortieren nach bestimmten Spalten beschleunigen. Der Verwaltungsaufwand für Indizes ist nicht zu vernachlässigen. Bildquelle: http://use-the-index-luke.com/de/sql/anatomie/index-baum Seite 14
Agenda 1 2 3 Ziel der Arbeit Grundlagen Umsetzung 3.1 3.2 3.3 Wahl der Datenbank Änderungen an der Struktur Indizes 4 5 Ergebnis Zusammenfassung und Ausblick Seite 15
Umsetzung Aufbau System Alle nicht benötigten Programme deaktiviert Datenbank und Tool laufen auf einem System Netzwerk Auslastung hat keinen Einfluss Immer nur ein Client WoPS+ Beispiel Firmendatensatz mit 150.000 Zeilen Gemessen wird die Zeit vom Einlesen der Daten und der nötigen Berechnungen Bildquelle: http://www.downloadclipart.net/large/915-monitor-and-computer-design.png; http://t3n.de/news/wp-content/uploads/2010/07/symbolbild-datenbank.jpg Seite 16
Agenda 1 2 3 Ziel der Arbeit Grundlagen Umsetzung 3.1 3.2 3.3 Wahl der Datenbank Änderungen an der Struktur Indizes 4 5 Ergebnis Zusammenfassung und Ausblick Seite 17
Wahl der Datenbank Oracle und MySQL eignen sich für den Vergleich. Die Wahl ist auf Oracle gefallen Seite 18
Agenda 1 2 3 Ziel der Arbeit Grundlagen Umsetzung 3.1 3.2 3.3 Wahl der Datenbank Änderungen an der Struktur Indizes 4 5 Ergebnis Zusammenfassung und Ausblick Seite 19
Änderungen an der Struktur Arbeitsplan Arbeitsplan_sim Auftrags Nr. Vorgang Arbeitsplatz Hauptzeit User Projekt Nr. ID A_1 10 5 400.0 12 49 1 A_1 20 8 375.0 12 49 2 A_2 10 2 200.0 12 49 3 FK Vorgangsstart Vorgangsende Projekt Szenario Nr. User 1 01.01.2012 05:33 02.01.2012 03:48 49 0 12 1 02.01.2012 06:00 02.01.2012 16:40 49 1 12 2 02.01.2012 03:48 03.01.2012 00:40 49 0 12 2 02.01.2012 16:40 03.01.2012 13:31 49 1 12 3 31.12.2011 17:07 01.01.2012 22:13 49 0 12 3 03.01.2012 00:20 03.01.2012 05:20 49 1 12 Arbeitsplan Auftragsnummer Vorgang Arbeitsplatz Hauptzeit User Projektnummer Vorgangsstart Vorgangsende Szenario Nr. A_1 10 5 400.0 12 49 01.01.2012 05:33 02.01.2012 03:48 0 A_1 10 5 400.0 12 49 02.01.2012 06:00 02.01.2012 16:40 1 A_1 20 8 375.0 12 49 02.01.2012 03:48 03.01.2012 00:40 0 A_1 20 8 375.0 12 49 02.01.2012 16:40 03.01.2012 13:31 1 A_2 10 2 200.0 12 49 31.12.2011 17:07 01.01.2012 22:13 0 A_2 10 2 200.0 12 49 03.01.2012 00:20 03.01.2012 05:20 1 Durch die Denormalisierung können viele Verbundoperationen eingespart werden Seite 20
Agenda 1 2 3 Ziel der Arbeit Grundlagen Umsetzung 3.1 3.2 3.3 Wahl der Datenbank Änderungen an der Struktur Indizes 4 5 Ergebnis Zusammenfassung und Ausblick Seite 21
Indizes Benutzer Firmendatensätze Simulierte Szenarien Szenario User Projekt Projekt Szenario Szenario Szenario Ein gruppierte Index mit den Spalten User-ID, Projekt-ID und Szenario-ID erscheint sinnvoll. Weitere nicht gruppierte Indizes werden nicht benötigt. Seite 22
Agenda 1 2 3 4 5 Ziel der Arbeit Grundlagen Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 23
in Sekunden Ergebnis der Arbeit Wechsel zu Oracle Leere Datenbank Gefüllte Datenbank 300 250 (50 Firmensätze) 200 150 -Werte in Sekunden -Werte in Sekunden Ausgangssituation 174 (100%) 242 (100%) 100 50 0 Durchschnitt Standardabweichung Oracle Datenbank 179 (102,87%) 247 (102,1%) Der Wechsel zu einer Oracle Datenbank brachte keinen großen Unterschied. Die Ergebnisse waren im Mittel sogar etwas schlechter als vorher. Seite 24
in Sekunden Ergebnis der Arbeit Wechsel zur neuen Datenbankstruktur Leere Datenbank Gefüllte Datenbank 300 250 (50 Firmensätze) 200 150 -Werte in Sekunden -Werte in Sekunden Ausgangssituation 174 (100%) 242 (100%) 100 50 0 Durchschnitt Standardabweichung Veränderte Struktur 133 (76,44%) 162 (66,94%) Die Veränderungen an der Datenbankstruktur ergaben eine Verbesserung von ca. 33%. Außerdem ist die Standardabweichung niedriger. Seite 25
in Sekunden Ergebnis der Arbeit Veränderungen an der Indizierung Leere Datenbank Gefüllte Datenbank (50 Firmensätze) -Werte in Sekunden -Werte in Sekunden Ausgangssituation 174 (130,83%) 242 (149,38%) 300 250 200 150 100 50 0 Durchschnitt Standardabweichung Veränderte Struktur 133 (100%) 162 (100%) Veränderte Indizierung 155(116,54%) 173 (106,8%) Der Verwaltungsaufwand der Indizes ist deutlich messbar. Mit steigender Datenmenge erhöht sich der Nutzen von Indizes. Seite 26
Agenda 1 2 3 4 5 Ziel der Arbeit Grundlagen Umsetzung Ergebnis Zusammenfassung und Ausblick Seite 27
Zusammenfassung und Ausblick Ein Wechsel zu einer Oracle Datenbank lohnt sich in unserem Beispiel nicht. Da MySQL ebenfalls den Anforderungen entsprach, sollte es im Anschluss ebenfalls getestet werden. Denormalisierung der Tabellen Arbeitsplan und Fauf beschleunigt den Vorgang. Dafür muss mehr auf die Konsistenz geachtet werden. Mit der Indizierung waren die Messungen etwas langsamer. Jedoch sollte es bei größeren Datenmengen schneller werden. Seite 28
Herzlichen Dank! Fabian Ripplinger
Quellen http://use-the-index-luke.com/de/sql/anatomie/index-baum http://cdn.flaticon.com/png/256/1829.png http://cdns2.freepik.com/free-photo/slots-representing-configuration_318-9479.jpg http://t3n.de/news/wp-content/uploads/2010/07/symbolbild-datenbank.jpg http://www.downloadclipart.net/large/915-monitor-and-computer-design.png Seite 30