Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Komplexpraktikum DIPBench Computer Science Faculty, System Architecture, Database Technology Group Dresden, 14.11.2007.

Ähnliche Präsentationen


Präsentation zum Thema: "Komplexpraktikum DIPBench Computer Science Faculty, System Architecture, Database Technology Group Dresden, 14.11.2007."—  Präsentation transkript:

1 Komplexpraktikum DIPBench Computer Science Faculty, System Architecture, Database Technology Group Dresden,

2 TU Dresden, Komplexpraktikum DIPBenchFolie 2 von 58 Gliederung 01 Einführung 02 Vorstellung des Komplexpraktikums 03 Aufgaben und Ergebnisse Teil 1Katrin Braunschweig Teil 2 Dirk Alsfaßer Teil 3Romain Treboux 04 Zusammenfassung

3 TU Dresden, Komplexpraktikum DIPBenchFolie 3 von 58 Zeitraum: – (Blockpraktikum) Teilnehmer: Katrin Braunschweig Dirk Alsfaßer Romain Treboux Aufgabe: Erweiterung des DIPBench-Initializers 02 Komplexpraktikum DIPBench

4 TU Dresden, Komplexpraktikum DIPBenchFolie 4 von Komplexpraktikum DIPBench DIPBench Macro Architecture

5 TU Dresden, Komplexpraktikum DIPBenchFolie 5 von Komplexpraktikum DIPBench

6 TU Dresden, Komplexpraktikum DIPBenchFolie 6 von Komplexpraktikum DIPBench Initializer (alter Zustand)

7 TU Dresden, Komplexpraktikum DIPBenchFolie 7 von Komplexpraktikum DIPBench Aufgabenstellung Woche 1: Realisierung von verschiedenen Erweiterungen neue Konfigfurationsmöglichkeiten Ist/Soll Vergleich: Erhebung von Ist-Werten Platformunabhängigkeit: Anpassung von TORQUE Modelierung von Einschränkungen (Constraints) und Speicherung der Schemata als XML-Dateien Implementierung einer Verbindung zur CSV Dateien Einbindung einer Log-Funktionalität mithilfe des Frameworks Log4j Woche 2: Realisierung von Verteilungsfunktionen

8 TU Dresden, Komplexpraktikum DIPBenchFolie 8 von 58 Aufgabenstellung Woche 1: Realisierung von Verwaltungsfunktionalitäten Angabe von Dateneigenschaften mit SOLL/IST-Vergleich Erweiterung der Konfigurationsmöglichkeiten Woche 2: Realisierung von Verteilungsfunktionen Normalverteilung Poissonverteilung 03 Aufgaben und Ergebnisse

9 TU Dresden, Komplexpraktikum DIPBenchFolie 9 von 58 Angabe von Dateneigenschaften mit SOLL/IST-Vergleich Dateneigenschaften Anzahl unterschiedlicher Werte (selectivity) Prozentsatz an Nullwerten (zero_percentage) Parameter der Verteilungsfunktionen (mean, variance, skewness) Angabe in Metadaten (TableMetadata) Eingabe über KonstruktorsetDistributionParameters(…) keine AngabesetDefaultDistribution() Default-Werte: in Initializer.properties Verwaltungsfunktionalitäten

10 TU Dresden, Komplexpraktikum DIPBenchFolie 10 von 58 Angabe von Dateneigenschaften mit SOLL/IST-Vergleich Ausgabe des Ist-Zustandes in Log-Datei für verschiedene Connections (CSV, JDBC, XML) CSV: Ist-Zustand von Funktionsparametern wird dokumentiert JDBC: bisher nur selectivity XML: bisher noch nicht implementiert Verwaltungsfunktionalitäten

11 TU Dresden, Komplexpraktikum DIPBenchFolie 11 von 58 Erweiterung der Konfigurationsmöglichkeiten Konfigurationsmöglichkeiten batch processing + batch-size multiple concurrent connections number of concurrent tuplestreams tuplestream buffer size Verwaltungsfunktionalitäten

12 TU Dresden, Komplexpraktikum DIPBenchFolie 12 von 58 Normalverteilung und Poissonverteilung Funktionsverlauf sehr ähnlich nicht gemeinsam implementiert Verteilungsfunktion Normalverteilung kontinuierlich Schiefe ist immer 0 Poissonverteilung diskret (+ nur für pos. Werte definiert) Schiefe ist variabel

13 TU Dresden, Komplexpraktikum DIPBenchFolie 13 von 58 Normalverteilung (Gauß-Verteilung) Symmetrie Parameter Verteilungsfunktion

14 TU Dresden, Komplexpraktikum DIPBenchFolie 14 von 58 Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion

15 TU Dresden, Komplexpraktikum DIPBenchFolie 15 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

16 TU Dresden, Komplexpraktikum DIPBenchFolie 16 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

17 TU Dresden, Komplexpraktikum DIPBenchFolie 17 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

18 TU Dresden, Komplexpraktikum DIPBenchFolie 18 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

19 TU Dresden, Komplexpraktikum DIPBenchFolie 19 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

20 TU Dresden, Komplexpraktikum DIPBenchFolie 20 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

21 TU Dresden, Komplexpraktikum DIPBenchFolie 21 von 58 Verteilungsfunktion selectivity bestimmt das Intervall und die Standardabweichung bzw. Varianz cardinality gibt Gesamtanzahl an zu generierenden Werten an getProbability(position, index) liefert Wahr- scheinlichkeitswert nach Verteilungs- funktion Normalverteilung (Gauß-Verteilung) Allgemeine Umsetzung

22 TU Dresden, Komplexpraktikum DIPBenchFolie 22 von 58 Normalverteilung (Gauß-Verteilung) Datentypen-spezifische Umsetzung: - INTEGER / BIGINT siehe Vorgehensweise - DOUBLE / FLOAT Schrittweite 0,01, wie INTEGER, skaliert - CHAR / VARCHAR Spaltenname + INTEGER - BOOLEAN 50/50 (da Symmetrie) - DATE Referenzdatum = Mittelwert (mean), Berechnen der Tage nach Verteilungsfunktion range, value list - value list: Verteilung der Indizes nach Verteilungsfunktion. - range: Überprüfung, ob Werte innerhalb von Range liegen Verteilungsfunktion

23 TU Dresden, Komplexpraktikum DIPBenchFolie 23 von 58 Normalverteilung (Gauß-Verteilung) Probleme und Einschränkungen Rundungsfehler zu wenig unterschiedliche Werte – selectivity wird nicht erreicht selectivity bestimmt variance – Benutzereingabe wird ignoriert Open tasks Poissonverteilung anpassen Verbesserungsvorschläge evtl. Prioritäten der Parameter ändern (variance) Verteilungsfunktion

24 TU Dresden, Komplexpraktikum DIPBenchFolie 24 von Teil 2 Aufgabenstellung Woche 1: Realisierung von Verwaltungsfunktionen -Erweiterung der Metadaten um Constraints -Definition XML Schema für Tabellendefinition -Adaption der PlatformModels von Torque Woche 2: Realisierung der Verteilungsfunktion Logarithmische Normalverteilung

25 TU Dresden, Komplexpraktikum DIPBenchFolie 25 von 58 Erweiterung der Metadaten um Constraints

26 TU Dresden, Komplexpraktikum DIPBenchFolie 26 von 58 Erweiterung der Metadaten um Constraints

27 TU Dresden, Komplexpraktikum DIPBenchFolie 27 von 58 Definition XML Schema für Tabellendefinition

28 TU Dresden, Komplexpraktikum DIPBenchFolie 28 von 58 Adaption des PlatformModels von Torque Ziel : DBMS-Unabhängigkeit Verschiedene DBMS verwenden unterschiedliche Datentypen --> dies muß bei der Erzeugung der Tabellen berücksichtigt werden (wenn man DBMS-unabhängig sein will) --> mit Hilfe des PlatformModels von Torque werden beim Erstellen der Create Table-Statements die im Programm verwendeten Datentypen auf die entsprechenden Datentypen des Ziel-DBMS gemapped

29 TU Dresden, Komplexpraktikum DIPBenchFolie 29 von 58 Unterstützte DBMS - Axion - Cloudscape - DB2-AS400 - DB2 - Derby - HSQLDB (Hypersonic) - Interbase - MS Acces - MS SQL - MySQL - Oracle - PostgreSQL - SAP DB - Sybase

30 TU Dresden, Komplexpraktikum DIPBenchFolie 30 von 58 Realisierung der Verteilungsfunktion Logarithmische Normalverteilung Verteilungsdichtefuntion: Dichtefunktion der Lognormalverteilung (mit μ = 0)

31 TU Dresden, Komplexpraktikum DIPBenchFolie 31 von 58 Verteilungsfunktion Verteilungsfunktion der Lognormalverteilung (mit μ = 0)

32 TU Dresden, Komplexpraktikum DIPBenchFolie 32 von 58 Erste Idee: Umkehrung der Verteilungsfunktion

33 TU Dresden, Komplexpraktikum DIPBenchFolie 33 von 58 Nachteile / Gründe für das Verwerfen der ersten Idee -insbesondere bei kleineren Datenmengen können die erzeugten Daten (zum Teil stark) von der gewünschten Verteilung abweichen -(Pseudo-)Zufall überflüssig oder sogar hinderlich beim Erzeugen eines gewünschten Testdatensatzes

34 TU Dresden, Komplexpraktikum DIPBenchFolie 34 von 58 Umgesetzte Lösung -Berechnung der Anzahl der verschiedenen Werte aus Selektivität und Kardinalität -Einteilung des Wertebereichs in Intervalle -Schrittweise Abarbeitung von links nach rechts: an jeder Intervallgrenze wird berechnet, wieviele Exemplare des aktuellen Wertes (Intervallgrenze) gemäß der Warscheinlichkeit des Wertes erzeugt werden müssen

35 TU Dresden, Komplexpraktikum DIPBenchFolie 35 von 58 Beispiel Datentyp: Integer Wertebereich (Range): 0-10

36 TU Dresden, Komplexpraktikum DIPBenchFolie 36 von 58 Beispiel

37 TU Dresden, Komplexpraktikum DIPBenchFolie 37 von 58 Beispiel

38 TU Dresden, Komplexpraktikum DIPBenchFolie 38 von 58 Beispiel

39 TU Dresden, Komplexpraktikum DIPBenchFolie 39 von 58 Beispiel

40 TU Dresden, Komplexpraktikum DIPBenchFolie 40 von 58 Beispiel

41 TU Dresden, Komplexpraktikum DIPBenchFolie 41 von 58 Beispiel

42 TU Dresden, Komplexpraktikum DIPBenchFolie 42 von 58 Behandlung der verschiedenen Datentypen Integer + Bigint: s. Beispiel Float + Double: wie Integer, nur Intervallberechnung für reelle Zahlen angepasst Char + Varchar: Spaltenname + Integer Boolean: 50/50 (keine sinnvolle Anwendung der Verteilungsfunktion möglich) Date: Referenzdatum + x tage (x --> Bigint)

43 TU Dresden, Komplexpraktikum DIPBenchFolie 43 von 58 Probleme - Rundungsfehler - teilweise zu wenig unterschiedliche Werte (selectivity wird nicht erreicht)

44 TU Dresden, Komplexpraktikum DIPBenchFolie 44 von Teil 3 Aufgabenstellung Woche 1: Implementierung einer CSV Connection Verbindung zu einer CSV Datei Einbindung von Log4j Anpassung des Quellkode vom Initializer Woche 2: Implementierung der Zipfsche Verteilung und der Verteilung von Pareto

45 TU Dresden, Komplexpraktikum DIPBenchFolie 45 von 58 CSV Datei Verwendung der API OpenCSV (http://opencsv.sourceforge.net/): au.com.bytecode.opencsv: A very simple CSV parser for Java released under a commercial-friendly license. im Projekt schon eingebunden wegen der Konfigurationsdateien einfache und gut dokumentierte Schnittstelle Ziel: Umsetzung einer ähnliche Funktionalität vie JDBCConnection (transparente Nützung von JDBC oder CSV)

46 TU Dresden, Komplexpraktikum DIPBenchFolie 46 von 58 CSV Datei: Schnittstelle

47 TU Dresden, Komplexpraktikum DIPBench Erhebung von IST-Werten Keine Anfragemöglichkeit Durchschnitt, Varianz, Schiefe werden on the fly ermittelt: ausgehend von (X 1,..., X i,... X n ) – X X i X n = 1 – X X i X n 2 = – X X i X n 3 = –Durchschnitt:m = 1 / n –Varianz:v = ( 2 / n) / n –Schiefe:s = ( 3 / n / n / n 3 ) / sqrt(v)

48 TU Dresden, Komplexpraktikum DIPBench CSV Datei: E/A Leistung Generierung von gleichverteilten Tupeln (f = 1)

49 TU Dresden, Komplexpraktikum DIPBench Log4j - Framework für eine leicht einstellbare Protokollierung Begriffe: Hierarchie von Loggers: 1 Logger für jeden Knoten der Klassenhierarchie Appender Konfiguration: –hartkodiert –mit einer XML-Datei –mit einer Properties-Datei Aufruf: getLogger() gibt eine Referenz über ein Logger zurück debug, info, warn, log Methoden

50 TU Dresden, Komplexpraktikum DIPBench Log4j – Konfigurationsdatei: Beispiel log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=(%-10r)[%-15t]%-5p %-20c{1} - %m%n log4j.appender.fileAppender=org.apache.log4j.FileAppender log4j.appender.fileAppender.File=log/demo.log log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern=%d [%-10t] %-5p %c{2} %x - %m%n log4j.appender.null=org.apache.log4j.varia.NullAppender log4j.logger.org=DEBUG, null #log4j.logger.org.tud.dipbench.initializer.gen=INFO, console #log4j.logger.org.tud.dipbench.initializer.conn=INFO, console log4j.logger.org.tud.dipbench.initializer.gen.UniformDataGenerator=DEBUG, console log4j.logger.org.tud.dipbench.initializer.conn=INFO, console...

51 TU Dresden, Komplexpraktikum DIPBench Log4j – Konfigurationsdatei: Gliederung (1) log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=(%-10r)[%-15t]%-5p %-20c{1} - %m%n log4j.appender.fileAppender=org.apache.log4j.FileAppender log4j.appender.fileAppender.File=log/demo.log log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern=%d [%-10t] %-5p %c{2} %x - %m%n log4j.appender.null=org.apache.log4j.varia.NullAppender log4j.logger.org=DEBUG, null #log4j.logger.org.tud.dipbench.initializer.gen=INFO, console #log4j.logger.org.tud.dipbench.initializer.conn=INFO, console log4j.logger.org.tud.dipbench.initializer.gen.UniformDataGenerator=DEBUG, console log4j.logger.org.tud.dipbench.initializer.conn=INFO, console

52 TU Dresden, Komplexpraktikum DIPBench Log4j – Konfigurationsdatei: Gliederung (2) log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=(%-10r)[%-15t]%-5p %-20c{1} - %m%n log4j.appender.fileAppender=org.apache.log4j.FileAppender log4j.appender.fileAppender.File=log/demo.log log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern=%d [%-10t] %-5p %c{2} %x - %m%n log4j.appender.null=org.apache.log4j.varia.NullAppender log4j.logger.org=DEBUG, null #log4j.logger.org.tud.dipbench.initializer.gen=INFO, console #log4j.logger.org.tud.dipbench.initializer.conn=INFO, console log4j.logger.org.tud.dipbench.initializer.gen.UniformDataGenerator=DEBUG, console log4j.logger.org.tud.dipbench.initializer.conn=INFO, console

53 TU Dresden, Komplexpraktikum DIPBench Die Zipfsche Verteilung Diskrete Verteilung, Support: {1,..., N} f(n;k,N)= a(k,N) / k s Problem: –Kein einfacher Zusammenhang zwischen (k,N) und dem Durchschnitt / der Varianz –Es werden keine Werte sondern Indizes generiert m = H N,k-1 / H N,k wobei:

54 TU Dresden, Komplexpraktikum DIPBench Die Pareto Verteilung Kontinuerliche Verteilungsfunktion Dichtefunktion : Definitionsbereich: [x m, infinity [ Nützliche Gleichung (kumulative Dichtefunktion):

55 TU Dresden, Komplexpraktikum DIPBench Die Pareto Verteilung: Bestimmung von k und x m Grundlagen: m = k.x m / (k – 1) - (wenn k > 1) V = m 2. 1 / [(k – 2).k] – (wenn k > 2) Einschränkungen: Intervall [x m, x Max ] x Max / P(x > x Max ) ist klein (z.B < ) Vorgegebene Varianz V und Durchschnitt m Selektivität: Anzahl von generierten Werten

56 TU Dresden, Komplexpraktikum DIPBench Pareto: Prinzip der Generierung Anpassung der Schrittweite während der Generierung

57 TU Dresden, Komplexpraktikum DIPBench Pareto: Typkonvertierung Unterstütze Typen: double, float: wird natürlich von der Verteilung erzeugt integer, bigint: Rundung zur nächsten Ganzzahl enumeration: eine Ganzzahl wird generiert und den entsprechenden Wert wird ausgewählt boolean: zweiwertiges Set Date: Referenzdatum + Zeitspanne (Varianz und Durchschnitt in Tagen angegeben)

58 TU Dresden, Komplexpraktikum DIPBenchFolie 58 von 58 Zusammenfassung Initializer (aktueller Zustand)


Herunterladen ppt "Komplexpraktikum DIPBench Computer Science Faculty, System Architecture, Database Technology Group Dresden, 14.11.2007."

Ähnliche Präsentationen


Google-Anzeigen