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