17.11.2014 Aufrufe

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3. Vorbetrachtungen e<strong>in</strong>er hochperformanten Lösung<br />

ebenfalls. Zusätzlich gibt es die Möglichkeit über e<strong>in</strong>e generelle Schnittstelle<br />

Unterstützung für neue Programmiersprachen h<strong>in</strong>zuzufügen. Dabei ist es<br />

grundsätzlich nicht vorgegeben, ob die Funktion e<strong>in</strong> L<strong>in</strong>k auf e<strong>in</strong>e kompilierte<br />

Funktion <strong>in</strong> e<strong>in</strong>er Bibliothek ist, o<strong>der</strong> ob <strong>der</strong> Inhalt <strong>der</strong> Funktion (als Zeichenkette)<br />

im Quelltext auf dem Server gespeichert ist und bei Bedarf <strong>in</strong>terpretiert<br />

und ausgeführt wird. Es können jeweils e<strong>in</strong>fache Funktionen mit elementarem<br />

Datentyp, Tabellenfunktionen, Aggregatfunktionen und Triggerfunktionen erstellt<br />

werden. H<strong>in</strong>zu kommt die Möglichkeit, dass PostgreSQL eigene komplexe<br />

Datentypen aus e<strong>in</strong>fachen Datentypen (o<strong>der</strong> Arrays davon) def<strong>in</strong>ieren kann.<br />

Diese können wie<strong>der</strong>um als Werte <strong>in</strong> Tabellen, Indizes und UDF (E<strong>in</strong>- und<br />

Ausgabe) verwendet werden. Dazu ist zu bemerken, dass die Speicherung e<strong>in</strong>es<br />

komplexen Datentyps o<strong>der</strong> Arrays <strong>in</strong> e<strong>in</strong>er Tabellenspalte pr<strong>in</strong>zipiell <strong>der</strong><br />

ersten Normalform bei <strong>der</strong> Normalisierung von relationalen Datenbanken wi<strong>der</strong>spricht.<br />

Allerd<strong>in</strong>gs können da<strong>durch</strong> meist Jo<strong>in</strong>s e<strong>in</strong>gespart werden, um die<br />

Performance <strong>der</strong> Datenbankanfragen zu erhöhen. Man muss also <strong>in</strong> <strong>der</strong> Praxis<br />

genau wissen, wann <strong>der</strong> E<strong>in</strong>satz solcher Features s<strong>in</strong>nvoll ist.<br />

Aufgrund <strong>der</strong> größeren Auswahl bei PostgreSQL und <strong>der</strong> generell besseren<br />

Performance gegenüber MySQL-Datenbanken (vgl. [20]) wurde die Entscheidung<br />

getroffen PostgreSQL für diese Arbeit als DBMS zu verwenden. Die Untersuchungen<br />

<strong>in</strong> Abschnitt 3.1.3 bestätigen dies als gute Entscheidung. Der<br />

Export <strong>der</strong> Daten aus <strong>der</strong> MySQL-Datenbank (<strong>in</strong> e<strong>in</strong>e CSV-Datei) und <strong>der</strong><br />

Import <strong>in</strong> die PostgreSQL-Datenbank ist sehr e<strong>in</strong>fach. Auch die permanente<br />

Umstellung des Java-Programms, das die Daten aufzeichnet, ist sehr e<strong>in</strong>fach,<br />

da die verwendeten SQL-Anweisungen (INSERT INTO) bei PostgreSQL die gleiche<br />

Syntax haben (nämlich SQL 97). Somit müsste nur die Stelle im Quelltext<br />

geän<strong>der</strong>t werden, die den Datenbanktreiber lädt und die Verb<strong>in</strong>dung zum Datenbankserver<br />

herstellt. Im e<strong>in</strong>fachsten Falle bedeutet das:<br />

1 DriverManager.getConnection(<br />

2 "jdbc:mysql://localhost:3306/dbname","user", "pass").connect();<br />

List<strong>in</strong>g 3.2: JDBC-Verb<strong>in</strong>dung zu e<strong>in</strong>em MySQL-Server <strong>in</strong> Java<br />

wird zu:<br />

1 DriverManager.getConnection(<br />

2 "jdbc:postgresql://localhost:5432/dbname","user", "pass").connect();<br />

List<strong>in</strong>g 3.3: JDBC-Verb<strong>in</strong>dung zu e<strong>in</strong>em PostgreSQL-Server <strong>in</strong> Java<br />

© Andreas Redmer — 29. September 2011 27

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!