Durch User Defined Functions in PostgreSQL

Werbung
Andreas Redmer
Effiziente Datenanalyse
in Netzwerkgraphen
Durch User Defined Functions
in PostgreSQL
Diplomica Verlag
Andreas Redmer
Effiziente Datenanalyse in Netzwerkgraphen
Durch User Defined Functions in PostgreSQL
ISBN: 978-3-8428-3161-2
Herstellung: Diplomica® Verlag GmbH, Hamburg, 2012
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte,
insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von
Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der
Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen,
bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung
dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen
der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik
Deutschland in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich
vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des
Urheberrechtes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme,
dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei
zu betrachten wären und daher von jedermann benutzt werden dürften.
Die Informationen in diesem Werk wurden mit Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden und der Verlag, die Autoren oder
Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für evtl.
verbliebene fehlerhafte Angaben und deren Folgen.
© Diplomica Verlag GmbH
http://www.diplomica-verlag.de, Hamburg 2012
Einleitung
In Link-State Rechnernetzen ist es üblich, dass jeder Knoten die Topologie des
gesamten Netzwerkes kennt und auf dessen Basis die Routing-Entscheidungen
treffen kann. Um die Performance und Qualität des Netzwerks zu erhöhen ist
meist eine Datenanalyse notwendig. Dabei werden beispielsweise Knoten und
Verbindungen gefunden, die eine hohe Wichtigkeit für das gesamte Netzwerk
haben. Durch die regelmäßige Aufzeichnung der Topologieinformationen an
einer Stelle im Netzwerk kann ein Datenbestand geschaffen werden, der bei
geeigneter Analyse Rückschlüsse auf Schwachstellen im Netzwerk geben kann.
Aufgrund der großen Menge an Daten kann die Datenanalyse sehr viel Zeit in
Anspruch nehmen, was die Nützlichkeit ihrer Ergebnisse in Frage stellen kann.
Deshalb wurde in einer Publikation von Mundt und Vetterick [22] im Juli 2011
die Rechenleistung mittels Cloud Computing verstärkt und der Zeitaufwand
somit verringert. Leider hatte diese Methode auch Nachteile, wie beispielsweise
den teuren Upload der großen Datenmengen in die Cloud.
In diesem Buch wurde für den selben Datenbestand die Performance erhöht,
indem User Defined Functions (UDF) in einem Datenbankmanagementsystem
eingesetzt wurden. Die Daten werden direkt auf dem Datenbankserver analysiert und die Ergebnisse mit SQL abgefragt. Gleichzeitig wurde die bestehende Implementierung untersucht und ihre Komplexität verringert. Im Ergebnis
konnte die Analyse nicht nur schneller, sondern auch komfortabler für den Anwender durchgeführt werden. Viele Arten der Datenanalyse der Netzwerktopologiedaten können nun mit SQL ohne zusätzliche Programme durchgeführt
werden. Am Ende des Buches werden mehrere Beispiele für Datenanfragen
aufgeführt, die den Einsatz der neuen Funktionen zeigen und Hinweise zur
Laufzeit geben.
Abstract
In link-state computer networks it is usual that every node knows the topology
of the entire network and can make the routing decisions based on that. To
enhance the performance and quality of the network a data analysis is needed
mostly. For instance nodes and connections with a high importance for the
network can be found by doing that. By capturing and recording the topology
information periodically a database can be created, which can be used to draw
conclusions on weaknesses in the network after adequate data analysis. Due to
the huge amount of data, the data analysis can take a lot of time, which can
be questioning the utility of the results. Because of that Mundt and Vetterick
presented a paper ([22]) in July 2011, which introduced a possibility to increase
the processing power and reduce the processing time by cloud computing.
Unfortunately this method had some disadvantages like the expensive upload
of the data into the cloud.
In this book the performance has been increased by using user defined functions (UDF) in a database management system on the same data source. So
the data is directly analyzed on the database server and the results are queryable by SQL. Additionally the existing implementation was analyzed and the
time complexity was reduced. As a result, the analysis is not only faster but
also more comfortable. Different kinds of data analysis of netzwork topology
data can now be accomplished with SQL and without additional programs. At
the end of this book several examples of queries are introduced, to show the
range of application and to indicate the runtime.
Inhaltsverzeichnis
Inhaltsverzeichnis
Abbildungsverzeichnis
III
Tabellenverzeichnis
IV
Verzeichnis der Listings
V
1. Einleitung
1.1. Aufbau der Arbeit . . . . . . . . . .
1.2. Beschreibung des Mesh-Netzwerks als
1.3. Qualität der zu analysierenden Daten
1.4. Ziel der Arbeit . . . . . . . . . . . .
1.5. Vorausgesetzte Hard- und Software .
.
.
.
.
.
1
1
2
3
7
10
. . . . . . . .
. . . . . . . .
Cloud-Service
. . . . . . . .
. . . . . . . .
12
12
13
14
15
19
.
.
.
.
.
.
.
.
.
.
.
.
21
21
21
26
28
32
36
.
.
.
.
.
40
40
40
42
43
46
. . . .
Graph
. . . .
. . . .
. . . .
.
.
.
.
.
2. Stand der Technik
2.1. Routing-Algorithmen . . . . . . . . . . . . . .
2.2. Metriken . . . . . . . . . . . . . . . . . . . . .
2.3. Betrachtung der bestehenden Implementierung
2.3.1. Algorithmische Komplexität . . . . . .
2.3.2. Vor- und Nachteile der Cloudlösung . .
.
.
.
.
.
.
.
.
.
.
. .
. .
als
. .
. .
3. Vorbetrachtungen einer hochperformanten Lösung
3.1. Wahl des DBMS und der Programmiersprache .
3.1.1. Wahl des Datenbankmodells . . . . . . .
3.1.2. Wahl des DBMS . . . . . . . . . . . . .
3.1.3. Wahl der Programmiersprache . . . . . .
3.2. Schnittstellendefinition . . . . . . . . . . . . . .
3.3. Möglichkeiten der Performancemessung . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4. Optimierungen in der Implementierung
4.1. Algorithmische Optimierungen . . . . . . . . . . . . . . . . . .
4.1.1. Optimierung des Dijkstra-Algorithmus . . . . . . . . .
4.1.2. Optimierung des Graphen . . . . . . . . . . . . . . . .
4.1.3. Die General-Gateway-Strategie“ . . . . . . . . . . . .
”
4.1.4. Nutzung stabiler Teilergebnisse bei ähnlichen Graphen
I
Inhaltsverzeichnis
4.2. Performanceoptimierter Programmierstil .
4.2.1. Quellcodedesign . . . . . . . . . . .
4.2.2. Zusammenhang zur algorithmischen
4.2.3. Design Pattern . . . . . . . . . . .
4.2.4. Implementierung von unendlich“ .
”
4.2.5. Adjazenzmatrix statt Adjazenzliste
4.3. Parallelisierung . . . . . . . . . . . . . . .
4.3.1. Multithreaded Dijkstra . . . . . . .
4.3.2. Dijkstra auf der GPU . . . . . . . .
4.4. Zusammenfassung und Ergebnisse . . . . .
. . . . . . . .
. . . . . . . .
Komplexität
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
5. Testläufe - Beispiele für Datenabfragen
5.1. Alle Routen zu allen Zeitpunkten . . . . . . .
5.2. Routenänderungen zwischen zwei Zeitpunkten
5.3. Routenänderungen bei Ausfall eines Knotens .
5.4. Routenänderungen bei Ausfall zweier Knoten
5.5. Knoten die häufig auf Routen liegen . . . . . .
5.6. Wichtige Knoten und Kanten . . . . . . . . .
5.7. Routenänderungen bei Ausfall einer Kante . .
5.8. Suche nach Flaschenhälsen . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
51
51
53
54
55
56
57
57
63
65
.
.
.
.
.
.
.
.
68
70
71
73
76
79
82
84
87
6. Zusammenfassung und Ausblick
90
6.1. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.2. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Literaturverzeichnis
94
A. Anhang: SQL Anfragen
A.1. Anzahl neuer Datensätze pro Minute . . . . . . .
A.2. Prüfung der Vollständigkeit der Daten . . . . . .
A.3. Prüfung der Korrektheit der Daten . . . . . . . .
A.4. Maximale Knotenanzahl auf kürzesten Pfaden . .
A.5. Floyd-Warshall-Berechnung in SQL . . . . . . . .
A.6. Floyd-Warshall-Berechnung mit PL/Python . . .
A.7. Test der General-Gateway-Strategie . . . . . . . .
A.8. Implementierung der Algebra aus Abschnitt 4.1.4
i
i
ii
iv
v
vii
viii
ix
x
B. Anhang: Suche nach einer Partitionierung
II
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xi
Herunterladen