Analyse der Speicherung von Modelldaten eines elektrischen Stromsystems Bachelorarbeit des Studiengangs Elektrotechnik (Bachelor) an der Hochschule Mannheim Student: Denis Ilin Ludwig-Frank-Str. 11 68199 Mannheim Mat.-Nr.: 825280 [email protected] Tel.: +49 (621) 43771142 Mobil: +49 (177) 4656567 Zeitraum: 15. Dezember 2012 - 15. April 2013 Betreuer: Prof. Dr. Gerhard Dietrich Hochschule Mannheim - Mannheim University of Applied Sciences Fakultät für Elektrotechnik Institut für Automatisierungssysteme (IAS) Prof. Dr. Norbert Kniffler Hochschule Mannheim - Mannheim University of Applied Sciences Fakultät für Elektrotechnik Institut für Energiesysteme (IES) EHRENWÖRTLICHE ERKLÄRUNG Ich habe diese Bachelorarbeit selbständig verfasst, alle verwendeten Quellen und Hilfsmittel angegeben, keine unerlaubten Hilfen eingesetzt und die Arbeit bisher in keiner Form als Prüfungsarbeit vorgelegt. Ort, Datum Unterschrift (Denis Ilin) SPERRVERMERK Die vorliegende Bachelorarbeit mit dem Titel „Analyse der Speicherung von Modelldaten des Stromsystems“ enthält vertrauliche Daten des Karlsruher Instituts für Technologie, Institut für Angewandte Informatik (IAI). Die Bachelorarbeit darf nur dem Erst- und Zweitgutachter sowie befugten Mitgliedern des Prüfungsausschusses zugänglich gemacht werden. Eine Veröffentlichung und Vervielfältigung der Bachelorarbeit ist - auch in Auszügen nicht gestattet. Eine Einsichtnahme der Arbeit durch Unbefugte bedarf einer ausdrücklichen Genehmigung des Verfassers und des Karlsruher Instituts für Technologie, Abteilung Institut für angewandte Informatik. Hiermit wird bestätigt, dass Karlsruhe Institut für Technologie (KIT) mit der Herrn Denis Ilin verfassten Bachelorarbeit inhaltlich und formal einverstanden ist. Ort, Datum Unterschrift (Dr. Wolfgang Süß) II ABSTRACT ANALYSE DER SPEICHERUNG VON MODELLDATEN EINES ELEKTRISCHEN STROMSYSTEMS Hochschule Mannheim Energietechnik und erneuerbare Energien Bachelorarbeit April 2013 Denis Ilin In dieser wissenschaftlichen Arbeit, die durch das Karlsruher Institut für Technologie (KIT), Institut für angewandte Informatik (IAI) vorgegeben wurde, sollte eine Analyse der Datenbanksysteme für die Speicherung und das Abfragen von Modelldaten eines elektrischen Systems durchgeführt werden. Die Datenbankmanagementsysteme MySQL, Neo4j und MongoDB, sowie die Programmiersprache Java wurden für die Durchführung der Performanceanalyse vorgegeben. Um die Aufgabenstellung zu lösen, wurden die Datenbankmanagementsysteme untersucht und für die Durchführung der Performancemessungen mögliche Datenbankschemas erstellt. Es wurden mehrere Messreihen unterschiedlich großer Modelle auf Schreib-, Lese und Suchperformance für jeden Datenbanktyp mithilfe von Datenbankschnittstellen für die Programmiersprache Java durchgeführt. Für die Erfassung der benötigten Zeit für jeden Schreib- bzw. Lesevorgang wurde in Java ein Programm geschrieben. Die erfassten Messwerte mussten effizient ausgewertet werden. Dafür wurde ein Programm zum Durchsuchen einer Textdatei in AutoIt und einer Anpassung der gefundenen Werte mit VBA in Excel erstellt. Für die Analyse der Ergebnisse wurde eine graphische Auswertung der Messwerte durchgeführt. III OPTISCHES MEDIUM VERWENDUNGSHINWEISE Diese CD kann unter folgender Umgebung verwendet werden: Microsoft Windows XP, oder höher INHALT Bachelorarbeit als PDF Dokumente des Anlagenverzeichnisses Quellcode der Programme Evaluationsumgebung IV INHALT Ehrenwörtliche Erklärung ...................................................................................................... II Sperrvermerk .............................................................................................................................. II Abstract ......................................................................................................................................... III Analyse der Speicherung von Modelldaten eines elektrischen Stromsystems ... III Optisches Medium ..................................................................................................................... IV Inhalt ................................................................................................................................................V Abbildungsverzeichnis ......................................................................................................... VIII Tabellenverzeichnis ...................................................................................................................X Abkürzungsverzeichnis........................................................................................................... XI Danksagung ................................................................................................................................... 1 Vorstellung des Unternehmens und der Abteilung ......................................................... 2 1. Einleitung................................................................................................................................... 4 1.1. Stand der Technik.............................................................................................................................. 6 1.2. Aufgabenstellung ............................................................................................................................ 10 1.3. Lösungsvorschlag ........................................................................................................................... 11 2. Datenbanksysteme .............................................................................................................. 12 2.1. Relationale Datenbanksysteme................................................................................................. 13 2.2. Not only SQL Datenbanksysteme (NoSQL) ........................................................................... 14 3. Vergleich der verschiedenen Datenbankmanagementsysteme.......................... 15 3.1. Relationales Datenbankmanagementsystem MySQL ....................................................... 15 3.1.1. Interner Aufbau des MySQL - Dateisystems ............................................................ 15 3.1.2. Die Verwendung von MySQL mit Java ........................................................................ 18 3.2. Dokumentenorientiertes Datenbankmanagementsystem MongoDB ........................ 22 3.2.1. Interner Aufbau des MongoDB - Dateisystems ...................................................... 23 3.2.2. Die Verwendung von MongoDB mit Java .................................................................. 28 3.3. Graphdatenbankmanagementsystem Neo4J ....................................................................... 31 V 3.3.1. Interner Aufbau des Neo4j – Dateisystems .............................................................. 32 3.3.2. Die Verwendung von Neo4J mit Java .......................................................................... 35 3.4. Fazit...................................................................................................................................................... 37 4. Datenbankentwurf .............................................................................................................. 38 4.1. Zweck der Anwendung ................................................................................................................. 38 4.2. Aufbau eines Elektroenergiesystems ..................................................................................... 38 4.2.1. Erzeugung elektrischer Energie ................................................................................... 38 4.2.2. Übertragung elektrischer Energie ............................................................................... 41 4.2.3. Verbrauch elektrischer Energie.................................................................................... 50 4.3. Erstellung des Datenmodells ..................................................................................................... 51 4.4. Topologie des Datenmodells ...................................................................................................... 53 4.5. Datenbankstrukturen ................................................................................................................... 53 4.5.1. Datenbankschema MySQL .............................................................................................. 53 4.5.2. Datenbankmodell MongoDB .......................................................................................... 54 4.5.3. Datenbankgraph Neo4j .................................................................................................... 57 5. Implementierung ................................................................................................................. 58 5.1. Java als Hochsprache ..................................................................................................................... 58 5.2. NetBeans als Entwicklungsumgebung ................................................................................... 58 5.3. Erzeugung von Testdaten ............................................................................................................ 59 6. Datenbank APIs .................................................................................................................... 60 6.1. API ........................................................................................................................................................ 60 6.2. Datenbank APIs ............................................................................................................................... 60 6.2.1. Schnittstelle für MySQL.................................................................................................... 60 6.2.2. Neo4j und MongoDB API ................................................................................................. 61 7. Benchmarkentwurf ............................................................................................................. 62 VI 7.1. Voraussetzungen eines Benchmarks ...................................................................................... 62 7.2. Durchführung und Auswertung ................................................................................................ 63 8. Durchführung der Performancemessung ................................................................... 64 8.1. Inbetriebnahme............................................................................................................................... 64 8.2. Durchführung eines Benchmarks ............................................................................................ 64 8.3. Logging für Dokumentation der benötigten Zeit................................................................ 64 8.4. Versuchsaufbau ............................................................................................................................... 65 8.5. Besondere Hinweise ...................................................................................................................... 67 8.6. Testtabellen ...................................................................................................................................... 68 8.6.1. Speicherung .......................................................................................................................... 68 8.6.2. Extrema .................................................................................................................................. 70 8.6.3. Lesen aller Datensätze von bestimmten Komponenten ..................................... 74 8.6.4. Suchen nach bestimmten Datensätzen ...................................................................... 76 8.7. Fazit...................................................................................................................................................... 80 9. Evaluation ............................................................................................................................... 81 9.1. Bewertung ......................................................................................................................................... 81 9.2. Ausblick .............................................................................................................................................. 83 Anhang ............................................................................................................................................. i Quellen und Literaturverzeichnis .........................................................................................ii Anlagenverzeichnis ...................................................................................................................iv a. Quellcode Java Programm Verwaltung MongoDB ....................................................... v b. Quellcode Java Programm Verwaltung MySQL ............................................................ v c. Quellcode Java Programm Verwaltung Neo4j ............................................................... v d. Quellcode Java Programm Benchmarks MongoDB ..................................................... v e. Quellcode Java Programm Benchmarks Neo4j ............................................................. v f. Quellcode Java Programm Benchmarks MySQL ............................................................ v VII ABBILDUNGSVERZEICHNIS Abb. 1: Enterprise Service Bus für Kopplung IT-Systeme [26] ................................................... 9 Abb. 2: DBMS, DB, DBS .......................................................................................................................... 12 Abb. 3: Beispieltabelle einer relationalen Datenbank .............................................................. 15 Abb. 4: 1:1 - Beziehung ......................................................................................................................... 16 Abb. 5: 1:N - Beziehung ........................................................................................................................ 16 Abb. 6: N:M - Beziehung ....................................................................................................................... 17 Abb. 7: Schnittstelle JDBC in NetBeans ........................................................................................... 19 Abb. 8: Collections im Dateisystem von MongoDB .................................................................... 24 Abb. 9: Aufbau einer ObjectId ........................................................................................................... 25 Abb. 10: Schematischer Aufbau eines Dokuments .................................................................... 26 Abb. 11: Ausschnitt aus MongoVUE - Anwendung .................................................................... 27 Abb. 12: Erläuterung der Suchabfrage in Embedded Documents ....................................... 30 Abb. 13: Knoten und Kanten eines Graphs ................................................................................... 32 Abb. 14: Vergleich eines Graphen mit Tabellen eines RDBMS [20] ....................................... 32 Abb. 15: Property-Graph-Modell anhand Verbraucher eines Zimmers ............................ 34 Abb. 16: Erzeugung elektrischer Energie in Deutschland ...................................................... 39 Abb. 17: Spannungsebenen ................................................................................................................. 40 Abb. 18: Hierarchische Darstellung des Energieversorgungsnetzes [8, S.19]..................... 44 Abb. 19: Strahlennetz [22, S. 24] ............................................................................................................. 47 Abb. 20: Ringnetz [22, S. 24] ..................................................................................................................... 48 Abb. 21: Verzweigter Ring [22, S. 24] .................................................................................................... 48 Abb. 22: Maschennetz [22, S. 24]............................................................................................................. 49 Abb. 23: Verbrauch elektrischer Energie in Deutschland ....................................................... 50 Abb. 24: Modellnetz für die Performancemessung ................................................................... 52 Abb. 25: Datenbankschema MySQL ................................................................................................. 54 Abb. 26: DB - Schema mit Collections und Docs ......................................................................... 56 Abb. 27: Haus, Leitungen und Verbraucher als Graph ............................................................. 57 Abb. 28: Autokonvertier in AutoIt .................................................................................................... 63 Abb. 29: Ausschnitt aus der Logdatei .............................................................................................. 64 Abb. 30: Konfiguration des Testsystems ....................................................................................... 65 Abb. 31: Speicherung von Objekten – Gesamtkomposition ................................................... 69 Abb. 32: Schreibvorgang Neo4j - 1000 Messungen ................................................................... 70 Abb. 33: Schreibvorgang Neo4j - 1000 Messungen - Testsystem 2 .................................... 71 VIII Abb. 34: Auslastung des Arbeitsspeichers und des Prozessors mit Neo4j ....................... 72 Abb. 35: Schreibvorgang MongoDB - 1000 Messungen ........................................................... 73 Abb. 36: Schreibvorgang MySQL - 1000 Messungen................................................................. 73 Abb. 37: Lesevorgang aller Datensätze bestimmter Objekte ................................................. 75 Abb. 38: Standardabweichung der Ergebnisse des Lesevorgangs ...................................... 76 Abb. 39: Suchvorgang nach bestimmten Datensätzen ............................................................. 78 Abb. 40: Standartabweichung beim Suchvorgang bestimmter Datensätze ..................... 79 IX TABELLENVERZEICHNIS Tab. 1: Schreibperformance - Alle Datensätze ............................................................................ 68 Tab. 2: Leseperformance - Alle Datensätze .................................................................................. 74 Tab. 3: Legende Performancemessung-I ....................................................................................... 76 Tab. 4: Suchperformance – Bestimmte Datensätze ................................................................... 77 X ABKÜRZUNGSVERZEICHNIS Abkürzung AGPL API DB IEEE Java JSON MongoDB MySQL Neo4J NoSQL RGDC SQL Bedeutung GNU Affero General Public License Application Programming Interface Datenbank Institute of Electrical and Electronics Engineers Hochsprache JavaScript Object Notation, Dokumentenorientiertes Datenbanksystem Relationales Datenbanksystem Graphdatenbanksystem Not only SQL Research Group Distributed Computing Structed Query Language XI Kapitel 1: Einleitung DANKSAGUNG Ein wichtiger Teil des Studienverlaufs an der Hochschule Mannheim ist die Bachelorarbeit. Eine große Bedeutung kommt hierbei einem kompetenten und hilfsbereiten Ansprechpartner während dieser Zeit zu. Ich möchte mich herzlich bei der Research Group Distributed Computing (RGDC) für die Möglichkeit dieser abwechslungsreichen, herausfordernden und äußerst spannenden Bachelorarbeit bedanken. Insbesondere möchte ich mich bei Herrn Dr. Wolfgang Süß, Herrn Dr. Karl - Uwe Stucky und Herrn Dr. Wilfried Jakob für die gemeinsame Diskussionen der Problemstellungen, ihrer Ratschläge zur wissenschaftlichen Vorgehensweise und die vielen hilfreichen Anregungen bedanken. Diese haben sehr zum erfolgreichen Abschluss des Projekts und der Arbeit beigetragen. 1 Kapitel 1: Einleitung VORSTELLUNG DES UNTERNEHMENS UND DER ABTEILUNG Das Karlsruher Institut für Technologie (KIT) ist eine Universität des Landes Baden Württemberg und nationales Forschungszentrum in der Helmholtz - Gemeinschaft. Es „gliedert sich in eine Vielzahl wissenschaftlicher Einrichtungen sowie in Organisationseinheiten mit Dienstleistungsaufgaben in Infrastruktur und Verwaltung. Organisatorische Einheiten zur Bündelung von KIT - Forschungsprojekten stellen Zentren und Schwerpunkte dar. Diese bilden auch die Basis für die strategische Forschungsplanung. Die FuE - Arbeiten des Großforschungsbereichs sind eingebettet in die übergeordnete Programmstruktur der Hermann - von - Helmholtz Gemeinschaft und gliedern sich in vier Forschungsbereiche mit insgesamt zwölf Programmen. Die Forschung im Universitätsbereich ist den elf Fakultäten zugeordnet.“[1] „Das Institut für Angewandte Informatik (IAI) betreibt Forschung und Entwicklung auf dem Gebiet innovativer, anwendungsorientierter Informations-, Automatisierungs- und Systemtechnik.“ [2] „Im IAI werden Systemlösungen für Aufgabenstellungen aus den Programmen Erneuerbare Energien, Rationelle Energieumwandlung und Nutzung, Nano- und Mikrosysteme, Bio - Grenzflächen, Technologie, Innovation & Gesellschaft, Wissenschaftliches Rechnen sowie Atmosphäre und Klima erarbeitet. Die FuE Vorhaben umfassen alle Entwicklungsphasen vom Konzeptentwurf bis zur Prototyperstellung und praktischen Erprobung und beinhalten neben der Systemrealisierung auch die Entwicklung neuartiger Informatik- und Automatisierungsmethoden und -werkzeuge, die im Rahmen der Systemerstellung eingesetzt und weiterentwickelt werden. In den FuE - Vorhaben finden aktuelle Konzepte und Techniken aus den Gebieten Wissensverarbeitung (wie z. B. Fuzzy Konzepte, Künstliche Neuronale Netze, Maschinelles Lernen, Mustererkennung), Kommunikation, Hypermedia, Telepräsenz, Robotik, Bussysteme sowie Mess-, Regelungs- und Automatisierungstechnik Anwendung. Die Vorhaben werden in interdisziplinärer Kooperation mit Partnern aus Industrie, Verwaltung und anderen Forschungseinrichtungen im In- und Ausland bearbeitet. Das Institut ist an Projekten der EU und der deutschen Industrie beteiligt. Die 2 Kapitel 1: Einleitung Mitarbeiter des Instituts sind vielseitig in Normungsgremien, Fach- und Gutachtergremien und Programmkomitees aktiv.“ [3] 3 Kapitel 1: Einleitung 1. EINLEITUNG Die Bachelorarbeit wird am Karlsruher Institut für Technologie (KIT), Institut für Angewandte Informatik (IAI) durchgeführt. Es wurde ein Projekt aus dem Arbeitsgebiet Verteiltes Datenmanagement der Research Group Distributed Computing bearbeitet. Diese Dokumentation liefert Informationen über den grundsätzlichen Aufbau eines Datenbanksystems (DBS), über Funktionen und Bedienbarkeit dreier verschiedener Datenbankmanagementsysteme MySQL, MongoDB und Neo4j mit Java. Darauf aufbauend sind durchgeführte Performancemessungen des Speicher- und Abfrageverhaltens von in den Datenbanksystemen abgebildeten Systemkomponenten eines elektrischen Netzes. Ein semantisches Datenmodell beschreibt den topologischen Aufbau eines elektrischen Netzwerkes und liefert Informationen über das Netz und seine Komponenten. Alle Objekte dieses Datenmodells sollen künftig für wissenschaftliche Zwecke Informationen, wie: Datenblätter, Simulationsmodelle und ihre Ergebnisse, Informationen über die geplanten oder getätigten Änderungen, Informationen zur Verfolgung der Historie von Änderungen des Netzes und Standorte enthalten. Eine weitere wichtige Anwendung des semantischen Datenmodells ist die Speicherung von Messdaten der jeweiligen Komponente. Darüber hinaus soll das semantische Datenmodell als umfangreiche Bibliothek für Planungs- und Informationssysteme wie z.B. NEPLAN und für Modellierungssoftware wie z.B. „EASiMoV (Electric Grid Analysis Simulation Modelling and Visualization)“[33] dienen. Die vorhandenen Modelldaten sollen die Netzeingabe vereinfachen. Die Ergebnisse der Netzanalysen wie z.B. Lastfluss-, Spannungsabfalls-, Kurzschlussberechnung oder Oberschwingungsanalyse können nach einer weiterführenden Entwicklung des Datenmodells zu einem oder mehreren Objekten des Datenmodells verlinkt werden. In dieser Arbeit wird der Begriff „Energieerzeugung“ verwendet. Dieser hat sich umgangssprachlich etabliert, ist aber aus physikalischer Sicht falsch. Nach dem Energieerhaltungssatz kann Energie in einem abgeschlossenen System weder erzeugt noch vernichtet werden. Energie kann nur aus einer Form in eine andere umgewandelt werden, z.B. thermische Energie in mechanische oder in elektrische Energie. 4 Kapitel 1: Einleitung Historisch bedingt werden in der Informatik Größenangaben in Byte mit 2 als Basis in n - ter Potenz dargestellt. Die Größe wird in Byte, Megabyte (MB), Gigabyte (GB), usw. dargestellt. Dies entsprach nicht gängigen Normen. Daraufhin wurde normgerecht Byte, Mebibyte (MiB), Gibibyte (GiB), usw. eingeführt. Die normgerechte Darstellung von MB, GB, TB, usw. hat nun 10 als Basis. Bei der Darstellung der Einheiten wird in dieser Arbeit von der aktuellen Norm abgewichen und das historisch bedingte und in der Informatik immer noch weit verbreitete Verfahren mit 2 als Basis verwendet. Aufgrund der besseren Lesbarkeit ist das Kapitel Implementierung und Datenbank APIs den Vorstellungen der Datenbanksysteme angehängt. Bei den personenbezogenen Bezeichnungen (z.B. Mitarbeiter) gilt die gewählte Form aufgrund der besseren Lesbarkeit für beide Geschlechter gleichermaßen. Die verwendeten Screenshots unterliegen dem Urheberrecht der jeweiligen Firmen, insbesondere des KIT Karlsruher Institut für Technologie, IAI Institut für Angewandte Informatik. Alle Namen von Produkten und Dienstleistungen sind Marken der jeweiligen Firmen. Die Firmen sind jedoch nicht Herausgeber dieser Arbeit oder sonst dafür presserechtlich verantwortlich. Alle Bezeichnungen und Werte bei den Beispieldaten sind frei erfunden. Ähnlichkeiten zu real existierenden Unternehmen oder Personen sind rein zufällig und nicht beabsichtigt. Im Anlagenverzeichnis aufgelistete Dokumente, sowie Quellcodes sind in elektronischer Form auf dem beiliegenden optischen Medium gespeichert. 5 Kapitel 1: Einleitung 1.1. STAND DER TECHNIK Die Gewährleistung einer sicheren Verfügbarkeit von elektrischer Energie bildet die Grundlage für Wachstum und Wohlstand. Die Basis der Energieinfrastruktur ist das Elektroenergienetz. Im August 2011 wurden vom Bundestag und Bundesrat ein Ausstieg aus der Atomkraft und ein beschleunigter Ausbau, sowie ein Einstieg in die erneuerbaren Energien beschlossen. Nach dem Atomgesetz ist der komplette Ausstieg aus der Atomkraft bis 2022 vorgesehen. [9] Der dadurch fehlende Energiebedarf soll durch den Ausbau von erneuerbaren Energien abgedeckt werden. Nach §1, des Erneuerbare-Energien-Gesetzes (EEG) soll der Anteil erneuerbarer Energien an der Stromversorgung auf mindestens 80% des nationalen Energiebedarfs bis 2050 erhöht werden. [10] Aufgrund der neuen Anforderungen durch einen stark fluktuierenden elektrischen Energieflusses haben für die Energiewende die Elektroenergienetze die Aufgabe mithilfe von intelligenten Kommunikations- sowie Speichertechnologien die Balance zwischen dem Erzeuger und dem Verbraucher unter Berücksichtigung der Einhaltung der Spannungsqualität nach EN 50160 und einer konstanten Frequenz in allen Netzknoten auszugleichen. [11] Das Führen der Elektroenergienetze übernimmt das Netzleitsystem. Dabei handelt es sich um mehrere, hierarchisch den Spannungsebenen zugeordnete, miteinander kommunizierende Warten mit jeweils eigener Netzleitstelle. Jede Netzleitstelle kann die Schaltzustände von den Schaltanlagen und Schaltgeräten jeder Umspannstationen, die sich in ihrem Netzbereich befinden, ändern und überwachen. Dafür kommt die Fernwirktechnik zum Einsatz. Die Kommunikation findet über den Netzleitstellenrechner und in den Umspannwerken installierten Stationsleitrechner statt. Die Stationsleitrechner kommunizieren ihrerseits mit den Feldrechnern, die bestimmten Schaltfeldern zugeordnet sind. [8, S. 675 ff; 14] Der Informationsfluss von der Prozessebene in Richtung Hauptschaltleitung erfolgt über die auf dem Weg liegenden Netzleitstellen nach IEC 61850. Unter einer Hauptschaltleitung wird eine oberste Netzleitstelle in der hierarchischen Netzleitstellenstruktur verstanden. Sie führt das Transportnetz. [8, S. 678] 6 Kapitel 1: Einleitung Die Hauptaufgabe einer Netzleitstelle ist das Führen des ihr zugeordneten Netzes. Hierfür stehen in der Netzleitstelle Supervisory Control and Data Acquisition (SCADA) und Höherwertige Entscheidungs- und Optimierungsfunktionen (HEO) zu Verfügung. [8, S. 683 ff] SCADA sind Funktionen zum Überwachen und Melden der Prozesszustände sowie zum Steuern und Regeln der Prozesse. Die Antwortzeiten des Stationsleitsystems liegen im Millisekundenbereich. Unter einem Stationsleitsystem kann ein Industrie PC verstanden werden. Eine weitere wichtige Funktion von SCADA ist die Visualisierung der Netzwerktopologie und der Zustandsgrößen. Hier wird beispielweise ein aktueller Zustand des Netzes mit dazugehörigen Messwerten dargestellt. Dieses Prozessabbild wird in Form von sogenannten Fließbildern dargestellt. Somit werden Prozesswerte aktuell gehalten. Für die Dokumentation der Ereignisse werden vom System in Textform darstellbare Ereignis- sowie Störungslisten geführt. Neben den ereignisgesteuerten Listen werden die laufenden Mess- und Zählwerte in wählbaren Zeitrastern vom System erfasst. Die Daten dienen als Grundlage für die Energiebedarfsrechnung und der Kundenabrechnung. Alle gespeicherten Werte lassen sich auch graphisch darstellen. [8, S. 679 ff] Bei großen Netzleitstellen werden Informationen adäquat dargestellt. Hierbei kommt die Rückprojektionstechnik zum Einsatz. Der Unterschied dabei ist, dass die Visualisierung an einer großen Wand vor dem Bediener der Netzleitstelle erfolgt. Außerdem besteht mit SCADA auch die Möglichkeit die Schaltungstopologie mit geographischen Informationen zu verknüpfen. So kann die Fehlerortung und Störungsbeseitigung schneller erfolgen. [8, S. 682] Neben den SCADA - Funktionen für die Netzführung ermöglichen Netzleitsysteme noch die Funktionen für die wirtschaftliche Optimierung der Netzführung, der Verfügbarkeit und der Sicherheit des Personals. Dies sind sogenannte HEO Funktionen. Dies können Kurzschlussstromberechnung, z.B. Prognostizierung Lastbeeinflussung des durch Energiebedarfes, Fernwirktechnik, Fehlersuche im Falle einer Störung mit abschließender graphischer Darstellung usw. [8; 12, S. 684] 7 Kapitel 1: Einleitung Somit werden die Anforderungen an die Netze immer höher und die Netze werden immer komplexer. Daher sind innovative Lösungen der Netzprobleme und Optimierungen notwendig. Die oben genannten Funktionen sind bereits erprobt und befinden sich seit mehreren Jahren im Betrieb. Steigende Anzahl dezentraler Kraftwerke mit fluktuierendem Energiedargebot kann massive Auswirkungen auf Energieversorgungsunternehmen (EVU) haben, da die Netzstabilität und Versorgungssicherheit weiterhin auf gleichem Niveau gewährleistet werden müssen. Größere Anzahl an Kraftwerken bringt ein höheres Datenaufkommen mit sich. Die darin integrierten Anlagen müssen permanent überwacht und intelligent geregelt werden. Für die frühzeitige Erkennung von Engpässen, müssen Messdaten gespeichert und ausgewertet werden. Des Weiteren stehen IT-Systeme betreffend Interoperabilität zwischen den Unternehmen vor neuen Herausforderungen. Beispielweise der Austausch von Netzzuständen zwischen Übertragungsnetzbetreiber (ÜNB) oder modellierten neuen Komponenten. Aus technischer Sicht wird eine neue Kommunikationsinfrastruktur für alle Spannungsebenen, insbesondere Niederspannungsebene, benötigt. [23, S. 1 f] Die International Electrotechnical Commission (IEC) 61970 beschreibt eine Programmierschnittstelle für Energiemanagementsysteme (EMS). Sie legt ein abstraktes Modell fest, Common Information Model (CIM) genannt. Es umfasst alle wichtigen Objekte und Relationen zur Darstellung von Stromnetztopologien und Datenaustauschformate. Aktuell wird das CIM als United Modeling Language (UML) – Modell von Normungsgruppen zur freien Verfügung gestellt. [24, 25] Das CIM kann z.B. für die Kopplung verschiedener IT-Systeme mit einem „Enterprice Service Bus“ realisiert werden wie in Abb. 1: Enterprice Service Bus für Kopplung ITSysteme dargestellt. Für weitere Detailinformationen ist das Paper online verfügbar. [23] 8 Kapitel 1: Einleitung Abb. 1: Enterprice Service Bus für Kopplung IT-Systeme [26] 9 Kapitel 1: Einleitung 1.2. AUFGABENSTELLUNG In dieser Bachelorarbeit sollen Möglichkeiten zur Speicherung sowie das Abfragen von Modelldaten eines elektrischen Stromsystems untersucht werden. Das Stromsystem ist in den folgenden Datenbanken abzubilden und Performancemessungen durchzuführen: Relationale Datenbank MySQL Graphdatenbank Neo4j Dokumentenorientierte Datenbank MongoDB Als Nutzdaten sollen Stromsystemmodelle verschiedener Größen in den Datenbanken abgespeichert (bzw. in Graphen abgebildet) werden. Softwaremodule zur Bedienung der Datenbanken sollen in der Sprache Java realisiert werden. Aus dieser Aufgabenstellung ergeben sich folgende Teilaufgaben: Installation und Test der drei Datenbanksysteme Analyse der topologischen Eigenschaften des Stromsystemmodells Erstellung von Datenbankschemas für die Performancemessungen, aufbauend auf den Ergebnissen der Analyse Festlegung des Verfahrens der Performancemessungen in Java Durchführung der Performancemessungen in Java Dokumentation der Ergebnisse und Fazit 10 Kapitel 1: Einleitung 1.3. LÖSUNGSVORSCHLAG Zur Lösung der Aufgabenstellung werden zuerst die Datenbankmanagementsysteme MySQL, Neo4j und MongoDB untersucht. Danach wird ein vereinfachtes reales Beispielstromsystemmodell in den drei Datenbankmanagementsystemtypen abgebildet. Die Erzeugung von Testdaten, sowie Datenbankzugriffe werden in der Programmiersprache Java mithilfe herstellerspezifischer Datenbankschnittstellen realisiert. Die Voraussetzungen für die Durchführung der Performanceanalyse werden festgelegt. Es sollen Schreib-, Lese- und Suchzugriffe der drei Datenbanksysteme verglichen werden. Dafür soll in Java ein Programm zur Zeiterfassung entwickelt werden. Schließlich sollen Ergebnisse aus den Performancemessungen analysiert und ausgewertet werden. Daraus gewonnene Informationen sollen Hinweise auf weiterführende Messungen ergeben, die aufgrund des zeitlichen Umfanges im Rahmen einer Bachelorarbeit nicht durchzuführen sind. 11 Kapitel 2: Datenbanksysteme 2. DATENBANKSYSTEME Unter Datenbankmanagementsystem (DBMS) versteht man eine Software zur Verwaltung von Datenbanken. Die Datenbank selbst stellt einen zusammengehörigen Datenbestand dar. Das DBMS und Datenbanken bezeichnet man als Datenbanksystem (DBS). [4, S. 20] Abb. 2: DBMS, DB, DBS 12 Kapitel 2: Datenbanksysteme 2.1. RELATIONALE DATENBANKSYSTEME Das Konzept relationaler Datenbanken stammt aus den frühen Siebziegenjahren. Die Daten werden in Form von Tabellen, die miteinander verknüpft sein können, gespeichert. Für einen Zugriff auf die gespeicherten Daten wurde eine Sprache SQL entwickelt. [5, S. 23] SQL ist die Abkürzung für Structed Query Language (Strukturierte Abfragesprache) und sie definiert die Sprache, die verwendet wird, um Datenbankzugriffe zu realisieren. Die Hauptaufgabe von SQL ist das Lesen, Verändern und Hinzufügen von Daten in der(die) Datenbank. Der Begriff relational beschreibt wie die Datenbank technisch realisiert ist. Eine Relation stellt eine zweidimensionale Anordnung von Feldern dar, auch Array genannt. Typischerweise wird eine Relation durch eine Tabelle beschrieben. Jede Tabelle besteht aus Zeilen (auch Tupeln genannt) und Spalten (Attributen). Zelleninhalte bzw. in den Spalten vorhandene Einträge beschreiben die entsprechenden Attributwerte. Eine Relation kann sowohl ein Zusammenhang von Attributen bzw. Attributwerten innerhalb einer Tabelle, als auch eine Verknüpfung von mehreren Tabellen durch Fremdschlüssel sein. [34, S.34] 13 Kapitel 2: Datenbanksysteme 2.2. NOT ONLY SQL DATENBANKSYSTEME (NOSQL) Der Begriff „NoSQL“ steht für „Not only SQL“. Dabei sind neue Ansätze und Techniken gemeint, um Datenbanksysteme flexibler bezüglich Skalierbarkeit und Verfügbarkeit im Vergleich zu den relationalen Datenbanksystemen zu gestalten. Die aktuellen NoSQL - Datenbanksysteme haben einige Eigenschaften gemeinsam. Das zugrunde liegende Modell ist nicht starr, die Systeme sind auf eine skalierbare Verteilung ausgerichtet, für die Kommunikation mit den Clients werden andere Protokolle als SQL eingesetzt und es handelt sich um schemafreie Systeme. [6, S. 2] Neben den traditionellen Verfahren der klassischen relationalen Datenbanken gibt es in der NoSQL - Welt noch weitere Algorithmen und Protokolle, welche an dieser Stelle jedoch nicht von Bedeutung sind. [6, S. 11] 14 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3. VERGLEICH DER VERSCHIEDENEN DATENBANKMANAGEMENTSYSTEME Um den Unterschied zwischen drei verschiedenen Datenbankmanagementsystemen MySQL, MongoDB und Neo4j zu verdeutlichen, werden der interne Aufbau sowie ihre Verwendung mit Java genauer erläutert. 3.1. RELATIONALES DATENBANKMANAGEMENTSYSTEM MYSQL In diesem Kapitel wird ein RDBMS am Beispiel von DBMS MySQL erklärt. Als Grundlage für die Verwaltung des DBMS dient die Sprache SQL. 3.1.1. INTERNER AUFBAU DES MYSQL - DATEISYSTEMS In MySQL sind die grundlegenden Strukturelemente die Relationen und Assoziationen. Relationen manifestieren sich in der Praxis fast immer durch Tabellen, die zueinander in Beziehung stehen. Diese logischen Abhängigkeiten von Tabellen legen die Assoziationen fest. [13, S. 20 ff] Jede Tabelle besteht aus Spalten und Zeilen. Spalten stellen die Attribute der Werte dar und Zeilen beschreiben den Zusammenhang der Attribute. Die Spaltenwerte werden als Ausprägungen der Attribute bezeichnet. [13, S. 21] Abb. 3: Beispieltabelle einer relationalen Datenbank In einer relationalen Datenbank sollen keine redundanten Informationen vorhanden sein. Dies wird durch die Normalisierung realisiert. Darunter wird das Auslagern von redundanten Informationen in extra Tabellen verstanden. Die ausgelagerten Informationen werden mithilfe von primären und sekundären Schlüsseln 15 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme miteinander verknüpft und können so abgefragt werden. Darauf wird im Verlauf des Kapitels näher eingegangen. ASSOZIATIONEN Zwischen den Tabellen einer Datenbank können Beziehungen hergestellt werden. Es werden folgende Beziehungstypen unterschieden: [13, S. 22 f] 1:1 - Beziehung Einer Zeile einer Tabelle wird genau eine Zeile einer anderen Tabelle zugeordnet. Abb. 4: 1:1 - Beziehung 1:N - Beziehung Einer Zeile einer Tabelle werden mehrere Zeilen einer anderen Tabelle zugeordnet. Abb. 5: 1:N - Beziehung N:M - Beziehung Eine Zeile einer Tabelle kann Beziehungen zu mehreren Zeilen einer anderen Tabelle haben, während gleichzeitig die Zeilen einer anderen Tabelle ebenfalls jeweils mehrere Beziehungen zu der ersten Tabelle haben. 16 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Abb. 6: N:M - Beziehung JOINS Mithilfe von Joins können mehrere Tabellen anhand von gleicher Attributwerte zu einer Tabelle verknüpft werden. Joins können mit weiteren SQL - Anweisungen kombiniert werden, so dass der überflüssige Inhalt ausgeblendet wird. [13, S. 30] SCHLÜSSEL Ein Schlüssel ist ein Attribut, das eine Zeile in einer Tabelle eindeutig identifiziert Ein Schlüssel stellt einen Zugriffsmechanismus zur Verfügung, um eine Zeile von einer anderen zu unterscheiden, da er immer eindeutig sein muss. Es werden zwei Arten von Schlüsseln unterschieden Primärschlüssel Diese werden in einer Spalte oder in Spaltenkombinationen einer Tabelle eingetragen und identifizieren somit die vorhandenen Zeilen eindeutig. Sekundärschlüssel Das sind Spalten, mit deren Werten Spaltengruppen eindeutig gekennzeichnet werden. Fremdschlüssel Mit Hilfe eines Fremdschlüssels wird Bezug zu einer oder mehreren Primärschlüsseln einer anderen Tabelle realisiert. Dieser kann aus einer oder mehreren Spalten bestehen und muss nicht eindeutig sein. D.h. Fremdschlüssel 17 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme können sich wiederholen und bilden somit eine mehrfache Beziehung zu einer anderen Tabelle. [13, S. 38f] INDIZES Indizes sind ein wichtiger Bestandteil einer relationalen Datenbank und dienen dazu, die Abfragezeiten zu verkürzen. Ein Index ist eine Spalte der Datentabelle. Zu jeder Zeile in der Datentabelle wird eine entsprechende Zeile in der Indextabelle erstellt. Ein Index liefert Informationen, wo in der Tabelle die Zeile mit dem gesuchten Wert zu finden ist. Somit müssen weniger Speicherzugriffe gemacht werden, als bei der Suche ohne Index. Unersetzlich ist die Indizierung bei großen Tabellen. Beispielweise die Verarbeitung einer Tabelle mit 1.000.000 Einträgen würde mit Indizes ca. 17 Minuten dauern, ohne Indizes kann der Prozess bis zu fünf Stunden in Anspruch nehmen. [15, S. 133] Die Verwendung von Indizes muss abgewogen werden und einem langsameren Schreib- und Aktualisierungsverhalten des RDBMS gegenübergestellt werden. Ein Index muss nur einmal erzeugt werden und steht danach immer zur Verfügung, um den Datenzugriff zu beschleunigen. In SQL ist keine Methode definiert, um Indizes anzulegen. Anbieter von RDBMS haben diese Funktion selbst implementiert. In MySQL werden Indizes mit der Methode Create Index erstellt. [15, S. 134f; 27, S. 196ff] 3.1.2. DIE VERWENDUNG VON MYSQL MIT JAVA An dieser Stelle wird beschrieben, wie das DBS MySQL unter Verwendung der Programmiersprache Java funktioniert. Für den Zugriff auf die Datenbank über Java müssen noch die entsprechenden APIs hinzugefügt werden. Für MySQL wurde eine Schnittstelle JDBS verwendet. Sie ist als Bibliothek verfügbar. Um sie in der verwendeten Entwicklungsumgebung NetBeans (www.netbeans.org) zu implementieren, muss jedoch dem erstellten Projekt der JDBC Driver hinzugefügt werden (Abb. 7: Schnittstelle JDBC in NetBeans). 18 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Abb. 7: Schnittstelle JDBC in NetBeans VERBINDUNGSAUFBAU Beim Aufbau einer Verbindung mit Java muss zuerst die verwendete Bibliothek ausgewählt werden. Es wird ein Treiber verwendet, der im Package com.mysql.jbc liegt. Die Klasse heißt Driver. Mit folgendem Syntax wird der JDBC Treiber in die Laufzeitumgebung eingebunden und eine neue Verbindung zur Datenbank instanziiert. Es sind mehrere Verbindungen zur gleichen oder verschiedenen SQL gleichzeitig möglich. Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; Conn = DriverManager.getConnection( "jdbc:mysql://host:port/dbname","user","password"); conn.close(); 19 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme EINFÜGEN VON DATEN Beim Einfügen von Daten wird mit if (conn != null) geprüft, ob eine Verbindung zur Datenbank besteht, ist dies der Fall, wird ein String erstellt und mit dem der Methode .query.executeUpdate (sql) in die SQL Datenbank geschrieben. Anschließend wird eine Statusmeldung über die Konsole ausgegeben. Sollte ein Fehler auftreten, oder keine Verbindung zur Datenbank bestehen, so wird der Fehler mit der Methode catch (Exception e) abgefangen und der Fehlerstack mit e.printStackTrace(); in der Konsole entsprechend ausgegeben. if (conn != null) { // Anfrage-Statement erzeugen. Statement query; try { query = conn.createStatement(); // Ergebnistabelle erzeugen und abholen. String sql = "CREATE TABLE "+ Tablename + " (id INTEGER not NULL, " + " Hausnummer INTEGER, " + " Strasse VARCHAR(255), " + " Stadt VARCHAR(255)," + " Verbrauch INTEGER," + " PRIMARY KEY ( Hausnummer ))"; query.executeUpdate(sql); System.out.println("Tabelle erfolgreich erstellt"); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { //Handle errors for Class.forName e.printStackTrace(); } } 20 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme LESEN VON DATEN Beim Lesen der Daten wird in Java ein String erzeugt, welcher einem SQL Kommando entspricht, dieser wird mit der Methode statement.executeQuery ("Select * from stromsystemmodell.haus"); in die SQL Konsole über den JDBC Driver übertragen und anschließend ausgeführt. conn.setReadOnly(true); statement = conn.createStatement(); // Result set get the result of the SQL query resultSet = statement.executeQuery("Select * from stromsystemmodell.haus"); while (resultSet.next()){ System.out.println(resultSet.getInt(1)+" "+resultSet.getString(2)); } resultSet.close(); statement.close();} ÄNDERN VON DATEN Beim Ändern von Daten werden bestehende Datensätze aus der Datenbank geladen und mit der update Methode in die Datenbank geschrieben. 21 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.2. DOKUMENTENORIENTIERTES DATENBANKMANAGEMENTSYSTEM MONGODB Dokumentenorientierte Datenbanken sind strenggenommen keine echten Dokumentendatenbanken. Hier werden nicht die Word- und Textdateien, sondern z.B. JSON ähnliche - kodierte (JavaScript Object Notation) Datenstrukturen abgelegt. Unter einem JSON ähnlichem Objekt wird eine durch Komma getrennte Liste von Eigenschaften verstanden. Jede Eigenschaft besitzt einen Wert, wobei ein Wert wiederum eine Eigenschaft sein kann (Embedded Document). Somit können Dokumente beliebig verschachtelt werden. Sie ermöglichen komplexe Datenstrukturen und es sind keine Schemadefinitionen notwendig. JSON besitzt folgende Basistypen: Arrays, Zeichenketten, Zahlen, Objekte und Boolesche Werte. [6, S. 8; 16, S. 41] WAS BEDEUTET MONGODB Der Name leitet sich vom englischen humongous (gigantisch) ab. MongoDB ist eine in C++ geschriebene, skalierbare, hochperformante, schemafreie Open - Source - Datenbank der Firma 10gen (www.10gen.com) nach AGPL (GNU Affero General Public License) - Lizenz, die für die meisten gängigen Plattformen bereitgestellt wird. Firma 10get bietet kostenpflichtigen Support und Training rund um MongoDB an. [6, S. 132; 16, S. 11 ff] INSTALLATION Um MongoDB nutzen zu können, muss das Image von der Herstellerseite heruntergeladen und in ein passendes Verzeichnis entpackt werden. Danach wird ein Pfad angelegt, in dem später die Datenbank gespeichert wird. 22 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.2.1. INTERNER AUFBAU DES MONGODB - DATEISYSTEMS Jede MongoDB – Datenbank unterteilt sich in Collections, die den Tabellen einer relationalen Datenbank ähnlich sind und in Dokumente, die mit Zeilen einer Tabelle vergleichbar sind. Dokumente bestehen im Gegensatz zu Tabellenzeilen aus dynamischen assoziativen Arrays, d.h. Eigenschaften und ihre Datentypen müssen beim Erstellen einer Collection nicht definiert werden. [6, S. 133] EINE COLLECTION Intern besteht die Datenbank aus Collections, s. Abb. 8: Collections im Dateisystem von MongoDB. Sie entspricht einer Tabelle in einer relationalen Datenbank und enthält eine beliebige Anzahl an Feldern (Key) mit einem Wert (Value). Die Datenbank kann, wäre sie nicht systemseitig begrenzt, unendliche Anzahl von Collections enthalten. Diese werden nicht wie Tabellen in relationalen Datenbanken vorher erstellt, sondern erst bei Bedarf. Die Collections können je nach Inhalt (Dokumente) unterschiedlich groß sein. Collections können mithilfe von Punktnotation, wie in dem unterstehenden Beispiel gezeigt, gruppiert und hierarchisch dargestellt werden. Collection 1: Gebäude1.Stockwerk2.Raum001 Collection 2: Gebäude1.Stockwerk2.Raum002 Das Beispiel zeigt, dass mit solcher Benennung die Übersicht und Zuordnung von Räumen realisiert werden kann. Die maximale Zeichenlänge des Namens einer Collection liegt bei 128 Zeichen. Man unterscheidet in MongoDB zwischen normalen Collections mit Dokumenten des Users, System Collection und Capped Callection. Die System Collection beinhaltet alle Metainformationen der Datenbank. Sie kann nicht vom User zur Datenspeicherung genutzt werden. Die Capped Collection ist eine besondere Art einer normalen Collection. Sie darf nur eine bestimmte, vorher festgelegte Größe erreichen. Nach dem Überschreiten des Limits wird das älteste Dokument entfernt, um Platz für das Neue zu schaffen. Dabei ist zu beachten, dass die neuen Dokumente exakt so groß oder kleiner als die Alten sein müssen. [16, S. 44 ff] 23 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Abb. 8: Collections im Dateisystem von MongoDB EIN DOKUMENT Eine Collection enthält eine beliebige Anzahl von Dokumenten, s. Abb. 8: Collections im Dateisystem von MongoDB. Ein Dokument ist die kleinste Einheit von MongoDB und es entspricht einem Eintrag in einer relationalen Datenbank, also einer Tabellenzeile. Im Gegensatz zur relationalen Datenbank können die Einträge ein identisches Schema aufweisen, müssen aber nicht. Man spricht von einem schemafreien Design einer dokumentenorientierten Datenbank. Ein weiterer Unterschied zu einer relationalen Datenbank ist, dass ein Dokument eine hierarchische Struktur besitzen kann. Es ist ebenfalls zu erwähnen, dass ein Dokument auf 16 MB beschränkt ist. Dies verhindert lange Anfragezeiten, da große Dokumente den Arbeitsspeicher und das Netzwerk zu sehr auslasten. Für größere Dokumente oder Dateien bietet MongoDB das alternatives Dateisystem GridFS. Da in dieser Arbeit keine Dateien bzw. Dokumente größer als 16 MB gespeichert werden, wird auf GridFS nicht weiter eingegangen. [16, S. 46 f] 24 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme EINE OBJECTID Jedes Dokument bekommt unabhängig von seiner Größe eine _Id mit einem Wert vom Datentyp „ObjectId“. Die _Id ist sozusagen die genaue Identifizierung eines Datensatzes, wie Primäre Key in MySQL. MongoDB leitet Metadaten immer über sie ab. Die _Id wird vollautomatisch generiert und an den Eintrag angehängt. Sie kann aber auch auf Wunsch selbst erstellt werden. Die automatisch generierte _Id ist 12 Bytes lang. „51115c4b930f419a6b91b937“ ist ein Beispiel für eine automatisch generierte _Id. Die Bedeutung der einzelnen Bytes kann aus Abb. 9: Aufbau einer ObjectId entnommen werden. [16, S. 50 f] Abb. 9: Aufbau einer ObjectId REFERENZIERUNG MongoDB bietet im Gegensatz zu einer relationalen Datenbank keine Joins an. Die Zugehörigkeiten von Dokumenten werden mit Referenzen gesetzt. Es gibt drei Formen der Referenzierung. Als erstes wird erwähnt, wie man innerhalb einer Collection referenzieren kann. Dies ist mithilfe von ObjectIds möglich. Bei der Referenz auf ein Dokument einer anderen Collection wird der Datentyp DBRef verwendet. Die letzte Möglichkeit zu referenzieren ist das Erstellen von geschachtelten Dokumenten, den sogenannten Embedded Documents. Bei dieser Lösung werden die Abfragen performanter und der Speicherplatz, der für die Referenzen benötigt wäre, wird gespart. Jedoch sollte beachtet werden, dass ausschließlich nicht redundante Informationen eingebettet werden sollen. [16, S. 49f, 51f; 19, S- 161f] 25 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme DER AUFBAU EINES DOKUMENTES AN EINEM BEISPIEL Ein Dokument (Abb. 10: Schematischer Aufbau eines Dokuments) ist wie folgt aufgebaut: Das erste Key/Value - Paar im Dokument ist immer die ObjectID. Darauf können eine unbestimmte Anzahl Key/Value - Paare folgen. Aber nicht nur Verweise auf Werte sind möglich. Im Beispiel „Adresse“ wird nicht auf einen einfachen Wert verwiesen, sondern auf ein weiteres (internes) Dokument. Dies verdeutlicht, dass auch Dokumente innerhalb von Dokumenten angelegt werden können, die so genannten Embedded Documents. Der Vorteil von Embedded Documents besteht darin, dass die ansonsten entstehenden Referenzen auf externe Dokumente innerhalb der Collection wegfallen. Der Verweis auf eine vollkommen andere Collection der Datenbank (DBRef) wird mit dem Schlüssel „Fakultäten“ verdeutlicht. Auch muss nicht nur zwingend auf einen einzigen Wert verwiesen werden, sondern Verweise auf mehrere Elemente sind möglich. Abb. 10: Schematischer Aufbau eines Dokuments Mit Hilfe der Anwendung „MongoVUE“ oder „MongoExplorer“ lassen sich in den Dokumenten gespeicherte Einträge visualisieren. Das oben vorgestellte Dokument kann folgendermaßen dargestellt werden: 26 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Abb. 11: Ausschnitt aus MongoVUE - Anwendung 27 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.2.2. DIE VERWENDUNG VON MONGODB MIT JAVA Die folgenden Abschnitte und Codebeispiele beschreiben das Arbeiten mit MongoDB unter Verwendung der Programmiersprache Java. Um nun Zugriff auf MongoDB über Java zu erhalten, müssen noch die entsprechenden APIs geladen werden. Die aktuelle Version muss als Jar – File (Javabinärcode) heruntergeladen und als Bibliothek eingebunden werden. EINFÜGEN VON DATEN Im Code - Beispiel unten wird eine Instanz der Klasse Mongo, aus dem Paket com.mongodb, erstellt. Danach wird ein Objekt der Klasse DB unter Verwendung der Methode .getDB und dem Parameter als Datenbankname eingefügt. Mit der Methode .getCollection(“CollectionName“) wird eine Collection aufgerufen. Sollte diese nicht existieren wird sie erstellt, genau wie die eben erwähnte Datenbank. Die Methode .getCollection gibt ein Objekt zurück, welches den Zugriff auf die Collection der Datenbank gewährt (DBCollection). Dieses Objekt (im Beispiel col) hat eine Methode .insert, die neue Dokumente in die Datenbank einfügt. Diese Objekte, die der Methode .insert übergeben werden, müssen das Interface DBObject implementieren. [18; 6, S. 136] import java.net.UnknownHostException; import com.mongodb.*; public class MongoTest { public static void main(String[] args) { Mongo m = new Mongo("localhost",27017); DB db = m.getDB("TestDatenbank"); DBCollection col = db.getCollection("TestCollection"); BasicDBObject doc = new BasicDBObject(); doc.put("Name", "HS - Mannheim"); doc.put("Ranking in %", 100); BasicDBObject info = new BasicDBObject(); info.put("Straße", "Paul - Wittsack - Str. 10"); info.put("Stadt", "Mannheim"); info.put("PLZ", 68163); doc.put("Adresse", info); col.insert(doc); } } 28 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Eine Referenz in MongoDB zu realisieren funktioniert ähnlich, wie das Schreiben eines Key - Value - Paares. Ein Objekt der Klasse DBRef wird erstellt und in dieses der Key des Verweises geparst (verknüpft). Mit der Methode .fetch() wird die Referenz aus der Datenbank ausgelesen. [17] DBRef ref = (DBRef) cursor.next().get("Verweis"); System.out.println(ref.fetch()); LESEN VON DATEN Im folgenden Codebeispiel sind zwei Möglichkeiten des Lesevorgangs unter Java dargestellt. Die Methode .findOne() ruft das erste Dokument der Collection auf. Die Methode .find() greift ohne Parameter auf alle in der Datenbank vorhandenen Dokumente zu. Im folgenden Beispiel erfolgt der Zugriff auf die Ergebnismenge über ein DBCursor-Objekt, das ein Iterator für DBObject-Objecte ist. Die Ausgabe erfolgt hier mit der Methode System.out.println(). import java.net.UnknownHostException; import com.mongodb.*; public class MongoLesen { public static void main(String[] args) { Mongo m = new Mongo("localhost",27017); DB db = m.getDB("TestDB"); DBCollection col = db.getCollection("testCollection"); DBObject newDoc = col.findOne(); System.out.println(newDoc); DBCursor cursor = col.find(); while(cursor.hasNext()){ System.out.println(cursor.next()); } } } Man kann mit der find() Methode nicht nur Zugriffe realisieren, sondern auch Dokumente durchsuchen. Parallel, wie auch beim Zugriff, durchsucht die .find() Methode alle Dokumente in der Collection. [18; 6, S.137; 19, S. 153] BasicDBObject search = new BasicDBObject(“Schüssel”, "Wert",); newDoc = col.findOne(search); System.out.println(newDoc); DBCursor cursor = col.find(search); while (cursor.hasNext()){ System.out.println(cursor.next()); } 29 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Im folgenden Beispiel werden alle Dokumente gefiltert, deren Schlüssel auf den Wert „Adresse“ auf ein Unterdokument mit Schlüssel „Ort“ mit Wert „Karlsruhe“ verweisen, wie in Abb. 12: Erläuterung der Suchabfrage in Embedded Documents dargestellt ist. Abb. 12: Erläuterung der Suchabfrage in Embedded Documents BasiDBObject query = new BasicDBObject("Adresse", new BasicDBObject("Ort","Karlsruhe"); DBCursor cursor = col.find(query); Eine Wildcardabfrage (z.B. beliebige Bilddateien *.jpg unter Windows) wird über ein Pattern realisiert. Bei der Eingabe „Test*“ wird nach allen Dokumenten gesucht deren Wert im Schlüssel „filename“ mit „Test“ beginnt. Pattern p = Pattern.compile("Test*"); BasicDBObject query = new BasicDBObject ("filename", p); DBCursor cursor = col.find(query); Kompliziertere Vergleiche sind nur mit Hilfe von Operatoren umzusetzen. Die Operatoren beginnen mit einem $ - Zeichen. Im Beispiel werden alle Werte zwischen 18 und 24 vom Schlüssel „Alter“ gefiltert. [16, S.61 ff; 19, S. 153 f] BasiDBObject query = new BasicDBObject(); operator.put("$gte", 18); operator.put("$lte", 24); BasiDBObject query = new BasicDBObject("Alter",operator); Cursor cursor = col.find(query); 30 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.3. GRAPHDATENBANKMANAGEMENTSYSTEM NEO4J Neo4j ist ein in Java implementiertes Graphdatenbanksystem der Firma NeoTechnology. Graphdatenbanksysteme zeichnen sich durch die Möglichkeit, viele vernetzte Informationen abzuspeichern und schnell durch den Graphen navigieren zu können, aus. Neo4j ist bekannt als eine Graphdatenbank mit einer hohen Performance und vielen Schnittstellen für die unterschiedlichen Programmiersprachen. In dieser Arbeit wurde die Community - Edition des DBS verwendet. Diese ist unter GNU General Puplic License (GPL) lizensiert und somit frei erhältlich. Hier werden Daten schemafrei in Graphen gespeichert. 31 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.3.1. INTERNER AUFBAU DES NEO4J – DATEISYSTEMS Graphdatenbanken unterscheiden sich grundsätzlich von relationalen Datenbanken. WAS IST EIN GRAPH Graphen sind ein beliebtes Mittel zur Modellierung vernetzter Informationen und komplexer Fragestellungen. Diese bestehen aus Knoten (bzw. Ecken), welche mit Kanten verbunden sind. Man unterscheidet zwischen gerichteten und ungerichteten Kanten. Eine gerichtete Kante beschreibt eine einseitige Beziehung zwischen den Knoten und die ungerichtete Kante eine beidseitige Beziehung. Analog dazu spricht man von gerichteten oder ungerichteten Graphen. Bei der Verwendung von mehreren Beziehungen pro Knoten handelt es sich um einen Multigraphen. [6, S. 209] Abb. 13: Knoten und Kanten eines Graphs Ein Graph kann auch durch die in Beziehungen stehende Tabellen eines relationalen Datenbanksystems dargestellt werden. Ein graphischer Vergleich ist in der unterstehenden Abbildung dargestellt. Abb. 14: Vergleich eines Graphen mit Tabellen eines RDBMS [20] 32 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme DAS PROPERTY - GRAPH - MODELL In dieser Bachelorarbeit soll das native Graphdatenbanksystem Neo4j untersucht werden. Dieses modelliert Property - Graphen. Das bedeutet, dass sowohl Knoten als auch Kanten mit Eigenschaften (Properties) versehen werden können. Zum Beispiel kann der Ausdruck „Kraftwerk (Steinkohle) ist an einem Umspannwerk (800MVA) angeschlossen“ als Graph verstanden werden. Hier handelt es sich um eine Graphdatenbank mit drei Einträgen (Kraftwerk, Relation, Umspannwerk) mit jeweils entsprechenden Eigenschaften (Steinkohle, angeschlossen, 800MVA). Daraus wird ein Vorteil einer Graphdatenbank ersichtlich, die Relationen können viel schneller (als z.B. bei einer relationalen DB) nach Daten durchsucht werden. Die Eigenschaften von den Knoten und Kanten sind Key/Value - Beziehungen vom Typ <String,Object>, z. B. „Typ: Steinkohle“ oder „Bemessungsleistung: 800MVA“. Sie müssen nicht streng typisiert sein, jedoch kann der Typ bzw. das Schema einer Kante oder eines Knotens genau definiert werden. Es ist durchaus möglich, dass ein Knoten mehrere Typen besitzt. Kanten, Knoten sowie Kantentypen (auch Labels genannt), können ein Schema besitzen. Es ist möglich festzulegen, welche Knotentypen mit welchen Kantentypen verknüpft werden dürfen. Jeder Knoten und jede Kante werden durch einen Property - Schlüssel „Id“ eindeutig identifiziert. Der Wertebereich für Id kann sehr unterschiedlich sein. Dies können z.B. Integerwerte oder Zeichenketten sein. [6, S. 210 ff] 33 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme Abb. 15: Property-Graph-Modell anhand Verbraucher eines Zimmers TRAVERSIEREN VON GRAPHEN Das Traversieren von Graphen bedeutet nichts anderes als Durchsuchen von Graphen nach bestimmten Kriterien. Die Traversierung von Graphen ist eine der wichtigsten Operationen von Graphdatenbanksystemen. [6, S. 294 f] Dafür bedarf es fünf Angaben: Startknoten Expander (Art der Kanten, die berücksichtigt werden sollen, z.B. nur eingehende oder nur vom bestimmten Typ) Order (Reihenfolge des Durchsuchvorgangs, d.h. ob Breiten- oder Tiefensuche zuerst erfolgt) Uniqueness (Angabe ob Objekte, die mehrfach vorhanden sind ignoriert oder durchsucht werden sollen) Evaluator (Abbruchkriterium des Suchvorgangs, z.B. wenn ein Knoten mit bestimmter Eigenschaft oder ein Knoten einer bestimmten Tiefe gefunden wurde) 34 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.3.2. DIE VERWENDUNG VON NEO4J MIT JAVA Für die Zugriffe auf Neo4j über Java, müssen die mit DBS gelieferten APIs eigebunden werden. Diese befinden sich im Verzeichnis „lib“ der heruntergeladenen Datei. EINFÜGEN VON DATEN Für die Erstellung von Knoten muss zuerst eine Datenbank initialisiert werden. Hierbei muss noch das Verzeichnis der DB angegeben werden. Hiermit wird es spezifiziert, wo eine neue Datenbank angelegt werden soll oder aus welcher Datenbank Informationen geladen werden sollen. Dabei werden alle benötigten Services aus dem Packet org.neo4j.graphdb.* importiert. import org.neo4j.graphdb.* EmbeddedGraphDatabase dbgraph = new EmbeddedGraphDatabase("C:\\BSP.db"); Nachdem die Datenbank gestartet wurde, kann ein Graph in Form von Knoten und Kanten mit deren Eigenschaften implementiert werden. Im folgenden Beispiel werden Kanten mittels Java Enum vordefiniert, alternativ können sie auch dynamisch erstellt werden. public static enum Rel implements RelationshipType { unterrichtet, kennt } Transaction tr = graphdb.beginTx(); try { Node Professor = graphdb.createNode(); Node Student = graphdb.createNode(); Student.setProperty("Name", "Mustermann"); Relationship Prof_Stud = Professor.createRelationshipTo(Student, Rel.unterrichtet); tr.success(); } catch (Exception e) { tr.failure(); } finally { tr.finish(); } 35 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme GRAPH - TRAVERSALS Ähnlich des Suchbefehls in SQL, wird in Neo4j nach Verbindungen zwischen Objekten untereinander gesucht. So kann man nach bestimmten Verknüpfungen von Objekten miteinander suchen und Eigenschaften der verknüpften Objekte ausgeben lassen. Iterable<Relationship> Freundschaften = Student.getRelationships(Direction.OUTGOING, Rel.kennt); for (Relationship Freundschaft : Freundschaften) { System.out.println(Freundschaft.getEndNode().getProperty("Name")); } 36 Kapitel 3: Vergleich der verschiedenen Datenbankmanagementsysteme 3.4. FAZIT Alle drei Datenbanksysteme lassen sich mit Java verwalten und erfüllen somit die Anforderungen der Arbeit. Für das DBMS MySQL wird die JDBC API verwendet, um SQL - Anfragen an das DBS weiterzuleiten. Für die DBMS MongoDB und Neo4j werden Java APIs des jeweiligen Herstellers verwendet, um durch die objektspezifischenMethoden von Java die Datenbankabfragen realisieren zu können. Man erkennt Ähnlichkeiten der Datenbanksysteme wie z.B. eine eindeutige ID eines Datensatzes. Jeder Knoten, jedes Dokument sowie jede Zeile einer Tabelle werden dabei eindeutig definiert. Es besteht in allen Datenbanksystemen die Möglichkeit vorhandene Datensätze zu indizieren, um die Performance bei der Abfrage von den Feldern bzw. Knoteneigenschaften zu steigern. Alle Datensätze können miteinander verknüpft werden, um ihre Zugehörigkeit zu realisieren, jedoch bei jedem System auf unterschiedliche Weise. Es sind aber auch klare Unterschiede erkennbar. Die NoSQL-Datenbanken sind schemafrei. Das heißt, dass es nicht notwendig ist ein festes Schema der Inhalte von Collections, Dokumenten und Knoten festzulegen. Die Anzahl der Datensätze eines Dokumentes oder die Anzahl und der Datentyp von Eigenschaften eines Knotens müssen in NoSQL - DBs nicht vordefiniert werden. Diese Größen können von Dokument zu Dokument bzw. von Knoten zu Knoten unterschiedlich sein. Das Datenbankschema des DBMS MySQL muss dagegen vorher festgelegt werden. Es werden Tabellen definiert, die bestimmte Spalten haben, in denen ein Datensatz vom bestimmten Datentyp gespeichert werden kann. 37 Kapitel 4: Datenbankentwurf 4. DATENBANKENTWURF 4.1. ZWECK DER ANWENDUNG In den Datenbanken sollen miteinander verknüpfte Objekte eines elektrischen Netzes abgebildet werden. Unter Objekten sind physikalische Objekte wie z.B. Kraftwerk, Umspannwerk, Haus usw. zu verstehen. Für die Untersuchung von Möglichkeiten zum Speichern von Objekten in die Datenbanken soll das elektrische Energiesystem näher betrachtet werden. 4.2. AUFBAU EINES ELEKTROENERGIESYSTEMS Ein System, welches aus technischer Sicht alle Einrichtungen zur Erzeugung, Übertragung und Verteilung elektrischer Energie innerhalb bestimmter Systemgrenzen beinhaltet, nennt man Elektroenergiesystem. [7, S.16 f] 4.2.1. ERZEUGUNG ELEKTRISCHER ENERGIE Die Erzeugung elektrischer Energie erfolgt in Kraftwerken. Diese können unterschiedlich groß sein, einige kW bis über 1000MW. Bei der Erzeugung elektrischer Energie wird zwischen Primär- und Sekundärenergieträgern unterschieden. Unter Primärenergieträger versteht man unveränderte, natürlich vorkommende Energieträger, die zur Energieumwandlung verwendet werden kann. Man unterscheidet zwischen erschöpflichen (z.B. fossile Energieträger, wie Kohle, Erdöl und Erdgas) und unerschöpflichen (z.B. Sonnenstrahlung) Primärenergieträgern. Sekundärenergieträger sind dagegen durch Menschen beabsichtigt veränderte Energieträger (z.B. Benzin, Heizöl). Dabei ist die Sekundärenergie die umgewandelte Energieform (z.B. mechanische oder elektrische Energie). [35, S. 8] Alle vorhandenen Kraftwerke arbeiten parallel in einem Verbundnetz. So kann plötzlicher oder im Voraus geplanter Ausfall (z.B. aufgrund von Revisionsarbeiten) eines Kraftwerkes durch ein oder mehrere andere Kraftwerke abgedeckt werden. [7, S.18] Die Bruttoerzeugung elektrischer Energie pro Jahr liegt in Deutschland im Terrawattbereich. So wurde z.B. im Jahr 2007 etwa 680,8 TWh elektrischer Energie erzeugt. Folgende Kraftwerkstypen (Abb. 16: Erzeugung elektrischer Energie in Deutschland) wurden dabei beteiligt. [7, S. 30 f] 38 Kapitel 4: Datenbankentwurf Erzeugung el. Energie in Deutschland Erzeugung el. Energie in % 25,0% 20,0% 15,0% 10,0% 5,0% 0,0% Kernenergie Braunkohle Steinkohle Erdgas Kraftwerkstypen Abb. 16: Erzeugung elektrischer Energie in Deutschland Die Erzeugung elektrischer Energie in Deutschland wird überwiegend mit thermischen Großkraftwerken realisiert ist. Trotz der wachsenden Tendenz und dem Ausbau der Anlagen zur Erzeugung elektrischer Energie aus erneuerbaren Energieträgern, sowie einem erheblichen Rückgang der Energieerzeugung aus Kernenergie ist noch von der Dominanz fossiler Energieträger auszugehen. [7, S. 30] 39 Kapitel 4: Datenbankentwurf SPANNUNGSEBENEN Aufgrund des breiten Spektrums unterschiedlich hohen Kraftwerksleistungen, der Standortbindung von Kraftwerken, verschiedenen Verbrauchern (Klein- Großverbraucher) und aufgrund Reduktion der Verlustleistung bei der Übertragung elektrischer Energie besitzt das Energiesystem eine hierarchische Struktur. Nach IEC 60038 (DIN VDE 0175) werden in der Abb. 17: Spannungsebenen Netznominalspannungen für verschiedene Anwendungen empfohlen. [7 ,S. 59] Abb. 17: Spannungsebenen Daraus erkennt man, dass Netznominalspannungen zwischen 6 kV und 30 kV , sowie 220 kV und 380 kV in IEC 60038 unter Hochspannung ausgeführt sind, sie werden aber im Sprachgebrauch als Mittelspannungen und Höchstspannungen bezeichnet. [7, S. 59] 40 Kapitel 4: Datenbankentwurf 4.2.2. ÜBERTRAGUNG ELEKTRISCHER ENERGIE Für die Übertragung elektrischer Energie werden überwiegend folgende Systeme verwendet: Einphasige Systeme Aufgrund der Einspeisung in die Bahnfahrzeuge mit einer Leitung kommen einphasige Systeme überwiegend im Bereich des schienengebundenen Verkehrs vor. Dabei liegt an der Oberleitung eine einphasige Wechselspannung an. Dabei ist zu beachten, dass das Bahnnetz überwiegend mit einer Frequenz von 16,7 Hz betrieben wird. Es sind aber bereits einphasige 50 Hz Netze im Einsatz. [21, S. 77] Drehstromsysteme Transport elektrischer Energie in Netzen erfolgt heute überwiegend mit dreiphasigem Wechselstrom (Drehstrom). Darunter ist die Drehstrom Hochspannungs - Übertragung (DHÜ) zu verstehen. Für dieses Übertragungssystem werden in Deutschland üblicherweise die oben genannten Spannungsebenen verwendet. In anderen Ländern sind auch Spannungen von 500 kV und 735 kV üblich. Durch das Hochtransformieren der Spannungen kann die Verlustleistung minimiert werden und Material eingespart werden. Verschiedene Spannungsebenen werden über Transformatoren, die in den Umspannanlagen installiert sind, gekuppelt. Transformatortypen werden im Verlauf dieses Kapitels genauer erläutert. Im gesamten DHÜ - Verbundnetz muss in Europa eine einheitliche Übertragungsnetzfrequenz von 50 Hz gehalten werden. Auf weitere Kriterien wie Spannungsqualität und -stabilität, Netzsicherheit, zulässige Schwankungsbreite der Netzfrequenz, Oberschwingungsgehalt, Versorgungsunterbrechungen, Übertragungsnetzbetreiber usw. Regelzonen wird in dieser der Arbeit deutschen nicht näher eingegangen. [21, S. 78ff; 8, S. 397f] 41 Kapitel 4: Datenbankentwurf Gleichstromsysteme Gleichstromnetze finden ihre Anwendung hauptsächlich bei der Versorgung bestimmter Verbraucher wie z.B. Walzwerke oder bei der Hochspannungs Gleichstrom - Übertragung (HGÜ), für die Übertragung elektrischer Energie über große Entfernungen, zur Kupplung asynchroner Netze, zum Anschluss von großen Kraftwerken ohne Erhöhung der Kurzschlussleistungen etc. [21, S. 80; 8, S. 405] Beim Einsatz von HGÜ - Systemen kann elektrische Energie mit weniger Verlusten übertragen werden, da Spannungsabfall in der Leitung nur ohmschen Charakter hat. Die Reaktanzen haben somit keinen Einfluss, wie auch Blindleistungs- und Wirbelstromverluste. Allerdings ist bei diesem Übertragungssystem höherer technischer Aufwand erforderlich, da Wechselund Gleichrichterstationen an Anschlüssen der Leitung erforderlich sind. Der Break - Even - Point (Schwelle, ab der sich investierte Kosten durch Erlöse erwirtschaften) liegt z.B. im Falle der Übertagung elektrischer Energie über Freileitungen bei ca. 700 - 1000km. [22, S. 4] 42 Kapitel 4: Datenbankentwurf NETZE DER ENERGIEVERSORGUNG In der Energieversorgungstechnik werden folgende Netze unterschieden: Transportnetze Als Transportnetze werden Höchstspannungsnetze 380 kV und 220 kV bezeichnet. In diesen Netzen wechselt sich typischerweise die Energieflussrichtung abhängig vom Kraftwerkseinsätzen, sowie Liefer - bzw. Bezugsabsprachen mit anderen Energiesystemen ab. Beispiele sind der Transport elektrischer Energie von standortgebundenen Kohlekraftwerken zu Ballungsgebieten oder auch von Kernenergie über weite Strecken innerhalb des europäischen Verbundnetzes. Unter einem Verbundnetz wird ein elektrischer Zusammenschluss von Netzen unterschiedlicher Betreiber verstanden. Kernaufgabe dieses Netzes ist die korrelative Unterstützung benachbarter Kraftwerke bei einem Ausfall. Transportnetze weisen eine vermaschte Struktur auf, so dass jeder Netzknoten von mindestens zwei Seiten versorgt wird. Sollte eine Leitung ausfallen, wird die volle Last von einer anderen Leitung übernommen. Man spricht von einem N - 1 Prinzip. Typischerweise sind die Transportleitungen als Drehstrom - Höchstspannungsfreileitungen realisiert, es kommen aber auch Drehstrom - Höchstspannungskabel vor. [8, S. 19; S.398] Übertragungsnetze Zur Übertragung elektrische Energie von einem Entnahmeknoten der vorgelagerten Transportnetze zu den kleineren Verteilerunternehmen oder Sondervertragskunden innerhalb einer Region dienen die 110 kV Übertragungsnetze. Die Energieflussrichtung ist in der Regel monoton. Der Aufbau der Netze kann hier entweder vermascht oder strahlenförmig sein. Davon hängt die Funktion des Netzes ab, Transportfunktion bei vermaschtem Aufbau oder die Verteilfunktion beim strahlenförmigen. [8, S. 20; S. 401] Verteilungsnetze Die aus den vorgelagerten Übertragungsnetzen bezogene Energie wird über die Verteilungsnetze lokal über ein größeres Gebiet verteilt. Sie verbinden die Unterspannungsseite der 110 kV - Umspannstation mit der 43 Kapitel 4: Datenbankentwurf Oberspannungsseite der Ortsnetz-, Industrie- oder auch Schwerpunktstation von Ballungsgebieten und von der Industrie. Hierbei spricht man von einer Primärverteilung. [8, S. 20] Niederspannungsnetze Unter Niederspannungsnetzen sind 400 V - Netze, die aus den Ortsnetz- oder Schwerpunktstationen der Verteilnetze gespeist werden, zu verstehen. Diese Netze leiten die Energie an die Endabnehmer weiter. Im Gegensatz zu den Transport-, Übertragungs- und Verteilnetzen, die als Dreileiter realisiert sind, führen die Niederspannungsnetze noch einen vierten Leiter (den Neutralleiter) mit. Dabei spricht man von einer Sekundärverteilung. [8, S. 20; 21, S. 82] Die Abb. 18: Hierarchische Darstellung des Energieversorgungsnetzes [8, S.19] verdeutlicht nochmal die hierarchische Struktur und die Funktionen der Energieversorgungsnetze. [8, S.20; 8, S.399ff] Abb. 18: Hierarchische Darstellung des Energieversorgungsnetzes [8, S.19] An der Stelle muss erwähnt werden, dass in Deutschland oft die Transportnetze als Übertragungsnetze bezeichnet werden und die 110 kV - Netze abhängig von der Struktur als Übertragungsnetz (bei vermaschter Struktur) oder als Verteilungsnetz (bei sternförmiger Struktur). [8, S. 21] 44 Kapitel 4: Datenbankentwurf UMSPANNSTATIONEN Umspannstationen Technisch sind dienen zur Kuppelung Spannungsebenen über verschiedenen Transformatoren Spannungsebenen. gekuppelt. Eine Umspannstation besteht mindestens aus einer oberspannungsseitigen Schaltanlage, einem Transformator und einer unterspannungsseitigen Schaltanlage. TRANSFORMATOREN Zur Transformation von einer Spannungsebene zur einer anderen werden in der Elektroenergieversorgung Transformatoren eingesetzt. Wichtige Kenngrößen von Transformatoren sind Bemessungsscheinleistung, Bemessungsspannung und Kurzschlussspannung (Kurzschlussimpedanz). So kommen zur Speisung des Niederspannungsnetzes (0,4 kV) aus dem Mittelspannungsnetz (10 kV - 30 kV) Bemessungsscheinleistungen von 250 kVA bis 1600 kVA zum Einsatz (teilweise auch bis 2,5 MVA). Transformatoren mit der Bemessungsscheinleistung von 12 MVA bis 40 MVA) werden zwischen Hoch - (110 kV - 20 kV) und Mittespannungsnetzen verwendet. Die oben genannten Transformatoren werden als Drehstromtransformatoren ausgeführt. Zur Kupplung der 380 kV, 220 kV und 110 kV Netze werden Transformatoren mit der Bemessungsscheinleistung 100 MVA bis 1000 MVA eingesetzt. Diese sind im europäischen Verbundnetz als drei zusammengeschaltete Einphasentransformatoren realisiert, z.B. 3x333 MVA. Dabei spricht man von einer Transformatorbank. Hierbei handelt es sich um Verteiltransformatoren. Sie ermöglichen Leistungsübertragung zwischen Netzen unterschiedlicher Spannungsebenen. Zur Kopplung eines Kraftwerkes an das Stromnetz werden Blocktransformatoren (auch Maschinentransformatoren genannt) mit einer vom Generator des jeweiligen Kraftwerkes abhängigen Leistung, jedoch maximal bis 1200 MVA, gebaut. Typische Bemessungsleistung eines 45 Kapitel 4: Datenbankentwurf Blocktransformators liegt zwischen 300 MVA und 1000 MVA. Außerdem besitzen große Kraftwerke noch Dreiwicklertransformatoren für interne Zwecke. In der Industrie werden häufig noch Anfahrtransformatoren zum Anlauf von großen Maschinen, Lichtbogenofentransformatoren falls häufiges Schalten bei hohen Strömen erforderlich ist, Stromrichtertransformatoren für viele Endgeräte, die schaltend ausgelegt sind, usw. verwendet. Die Funktionsweise eines Transformators, sowie mögliche Dreieck-, Stern- oder Zickzackschaltungen von ober- oder unterseitigen Wicklungen sind für diese Arbeit nicht relevant. Diese werden in dieser Arbeit nicht weiter erläutert. [28, S. 219; 22, S. 40 f] 46 Kapitel 4: Datenbankentwurf TYPISCHE NETZSTRUKTUREN Die erste Netzstruktur, das Strahlennetz, wird hauptsächlich im Niederspannungsbereich verwendet. Wie in Abb. 19: Strahlennetz dargestellt, verlaufen die Leitungen von der Umspannstation aus strahlenförmig und können verzweigt werden. Typisch ist diese Anschlussart bei geringer Lastdichte oder bei großen Punktlasten. Vorteile dieses Anschlusses sind geringe Investitionskosten, sowie ein einfacher Betrieb. Nachteilig ist die Möglichkeit der Versorgungsunterbrechung beim Ausfall von Leitungen. Abb. 19: Strahlennetz [22, S. 24] Eine weitere Netzstruktur ist das Ringnetz, s. Abb. 20: Ringnetz. Hier werden die Enden von oben genannten strahlenförmigen Leitungen mit einer Trennstelle verbunden. Das Netz wird üblicherweise mit offenen Trennstellen betrieben, so dass wieder eine strahlenförmige Netzstruktur entsteht. Diese Netzstruktur weist im Vergleich zum Strahlennetz eine höhere Sicherheit auf (auch Eigensicherheit genannt). Tritt z.B. ein Kurzschluss innerhalb eines Ringnetzes auf, werden die angrenzenden Trennstellen die Kabelstrecke freischalten. Zugleich erfolgt eine Zuschaltung der Trennstelle, die beide Strahlennetze verbindet. So können alle Verbraucher, auch die sich am abgeschalteten Abschnitt eines Strahls befinden, weiter versorgt werden. Üblicherweise findet diese Form des Netzes eine Anwendung im Mittelspannungsbereich, selten aber auch im Niederspannungsbereich. 47 Kapitel 4: Datenbankentwurf Abb. 20: Ringnetz [22, S. 24] Eine besondere Form des Ringnetzes ist in der Abb. 21: Verzweigter Ring [22, S. 24] dargestellt. Sie ist bei erhöhter Lastdichte verbreitet. Eine steigernde Anzahl von Vermaschungen und Einspeisepunkte bringt höhere Eigensicherheit des Netzes. Abb. 21: Verzweigter Ring [22, S. 24] Ringnetze benötigen mehr Investitions- und Betriebsaufwand, sind aber durch eine bessere Versorgungszuverlässigkeit und geringere Ausfallzeit vorteilhaft. Vermaschte Netze, Abb. 22: Maschennetz [22, S. 24], trifft man vornehmlich im Hochspannungs-, sowie im Mittelspannungsbereich. Je nach Vorgaben der zu versorgenden Lasten, werden die Netze so gebaut und betrieben, dass die Versorgung bei einem normgerechten Spannungsprofil und ohne Überlastung für Ausfälle von einem oder mehreren Betriebsmitteln gewährleistet ist. Man spricht vom (n - 1) – Prinzip, wenn beim Ausfall eines Systems das zweite System 100% der Leistung des 48 Kapitel 4: Datenbankentwurf ausgefallen Systems übernimmt. Beim (n - k) – Prinzip kann die Versorgung trotz des Ausfalls mehrere Systeme gewährleitet werden. Abb. 22: Maschennetz [22, S. 24] Die Form des Maschennetzes kommt aber auch im Niederspannungsbereich vor. Mehrfache Versorgung von Knoten gewährleistet eine sehr hohe Versorgungssicherheit. [8, S. 6; 21, S.83 ff] NETZTOPOLOGIE In der Energieversorgung werden wie im Kap. Typische Netzstrukturen beschrieben, zwischen Strahlen-, Ring- und Maschennetz unterschieden. Ihr Aussehen kann von der Spannungsebene, Lageplan, landschaftlichen Gegebenheiten, gewünschten Versorgungssicherheit usw. anhängig sein. Darauf aufbauend können Netze Modifikationen aufweisen, wie z.B. Netze mit Gegenstation, Netze mit Stützpunkten, Netze mit durchlaufenden Verteilkabeln, offene und geschlossene Netz usw. Abgesehen davon besitzt jedes Netz eine Trennstelle für die Möglichkeit ein Teil des Netzes spannungsfrei zu schalten (z.B. aufgrund Wartungsarbeiten oder für die Beseitigung einer aufgetretenen Störung). Dies hat eine Topologieänderung zu Folge. [8, S. 474] Auf verschiedene mögliche Modifikationen eines Netzes wird aufgrund des zeitlichen Aufwandes nicht näher eingegangen. Für die Performancemessungen wird ein vereinfachtes Modell, wie in Kap. 4.3. Erstellung des Datenmodells beschrieben, verwendet. 49 Kapitel 4: Datenbankentwurf 4.2.3. VERBRAUCH ELEKTRISCHER ENERGIE Von dem Bruttoerzeugungswert sind Kraftwerkseigenverbrauch, Netzverluste sowie sonstige Verluste (z.B. nicht erfasste Werte) abzuziehen. Somit ergibt sich für das Jahr 2007 ein Wert in Höhe von 613,3 TWh der erzeugten elektrischen Leistung, die hauptsächlich in den folgenden Verbrauchssektoren abgegeben wurde Abb. 23: Verbrauch elektrischer Energie in Deutschland. Abb. 23: Verbrauch elektrischer Energie in Deutschland Es fällt sofort auf, dass knapp die Hälfte der erzeugten Energie im Verbrauchssektor „Industrie“ und etwa ein Viertel in den Sektoren „Haushalt“ und „Gewerbe“ umgesetzt wird. 50 Kapitel 4: Datenbankentwurf 4.3. ERSTELLUNG DES DATENMODELLS Für die ersten Performancemessungen der Datenbanksysteme wird aufgrund einer besseren Übersicht ein Teil eines elektrischen Netzes in einer vereinfachten Form betrachtet, wie in Abb. 24: Modellnetz für die Performancemessung dargestellt ist. Dabei werden drei Kraftwerke aus dem 380 kV – Netz, ein Kraftwerk, das in das 110 kV – Netz einspeist, und ein Kraftwerkpark in der Mittelspannungsebene modelliert. In weiterführenden Analysen sollte das Datenmodell ausgebaut werden und realitätsgetreu dargestellt werden. Umspannwerke werden aufgrund der besseren Übersicht als eine eigenständige Einheit dargestellt. Anzahl und Typen der Transformatoren werden als Eigenschaft eines Umspannwerkes implementiert. Weitere Komponenten wie Schaltanlagen, Feldrechner, Feldgeräte, Fernwirkgeräte usw. werden nicht betrachtet. Eigenschaften eines Objektes werden als Zeilen in einem Dokument bzw. in einem Knoten oder in separaten Spalten einer Tabelle des relationalen DBS eigetragen. Für die Darstellung der Niederspannungsnetze werden drei verschiedene Netzstrukturen verwendet, Strahlennetz, Maschennetz und Ringnetz. Es werden drei Arten von Verbrauchern unterschieden: Groß-, Kleinindustrie und Häuser in der Niederspannungsebene. Jedes Haus besitzt folgende Attribute: Stadt, Straße, Hausnummer, durchschnittlicher Verbrauchswert und jeweilige Referenzen zum Übergeordnetem Objekt (Leitung oder Umspannwerk). Alle Netzübertragungstypen werden in Graphdatenbanksystemen als Kanten realisiert. Sie haben jedoch unterschiedliche Attribute und verbinden unterschiedliche Knotenarten (z.B. Kraftwerkknoten und Umspannwerkknoten). In den zwei anderen Datenbanksystemen werden Netzübertragungssysteme in eine separate Tabelle ausgelagert. Zu dieser Tabelle werden Verbindungen durch Referenzen bzw. Joins realisiert, um eine Verbindung der zwei Objekte zu gewährleisten. Netzsammelschienen werden in diesem Modell als Knoten mit ankommenden und abgehenden Abzweige realisiert. Verknüpfungen von den Objekten sollen ebenso wie die Objekte selbst Eigenschaften besitzen. Zum Beispiel ein Kraftwerk vom Typ Kernkraftwerk ist an einem 51 Kapitel 4: Datenbankentwurf Umspannwerk in der Stadt Musterstadt angeschlossen. Die Verbindung stellt ein Kabel dar. Dieses hat bestimmte Eigenschaften, wie z.B. Querschnitt, Hersteller, Alter oder Spannungsebene. Abb. 24: Modellnetz für die Performancemessung 52 Kapitel 4: Datenbankentwurf 4.4. TOPOLOGIE DES DATENMODELLS Die Erzeugung elektrischer Energie erfolgt in dem erstellten Modell in fünf Kraftwerken (Braunkohle,- Steinkohle-, Kernkraftkraftwerke in der Höchstspannungsebene; ein mittelgroßes Kraftwerk in der Hochspannungsebene, sowie ein Kraftwerkpark aus Windrad und Solaranlagen in der Mittelspannungsebene). Die erzeugte elektrische Energie wird in den Umspannstationen zu einer passenden Spannungshöhe transformiert. Dies erfolgt mithilfe von Transformatoren. Für den Transport elektrischer Energie wurden 4 Leitungstypen vorgesehen: Höchstspannung- und Hochspannungsleitung realisiert als Freileitungen, sowie Mittelspannungs- und Niederspannungsleitung realisiert als Kabel. Verbraucher dieses Modells sind Großindustrie, Kleinindustrie und einzelne Häuser in der Niederspannungsebene. 4.5. DATENBANKSTRUKTUREN Jeder Datenbanktyp besitzt eigene Struktur zum Speichern und Setzen von Referenzen. Aus diesem Grund werden nachfolgend drei verschiedene Datenbankschemas zur Abbildung der Stromnetzkomponenten dargestellt. 4.5.1. DATENBANKSCHEMA MYSQL Für jeden Objekttyp wie z.B. ein Kraftwerk oder ein Umspannwerk wird eine eigene Tabelle erstellt. Wie im Abb. 25: Datenbankschema MySQL dargestellt, wird jede erstellte Tabelle mit einer erweiterten Tabelle mithilfe von Hilfstabellen verknüpft. Dafür werden Primär- und Sekundärschlüssel verwendet. Die Hilfstabellen beinhalten ausschließlich die Informationen über die Verbindungen der jeweiligen Zeilen. 53 Kapitel 4: Datenbankentwurf Abb. 25: Datenbankschema MySQL Für die Eindeutigkeit jeder Zeile einer Tabelle werden Primärschlüssel verwendet. Diese werden vom DBMS automatisch indiziert. Es besteht aber die Möglichkeit Indizies für weitere Spalten zu setzen, um auf bestimmte Informationen schnelleren Zugriff gewährleisten zu können. Das kann anwendungsspezifisch im Verlauf der weiteren Analysen festgelegt werden. 4.5.2. DATENBANKMODELL MONGODB Das DBMS MongoDB ist schemafrei. Aus diesem Grund wurde für einen besseren Vergleich mit MySQL ein ähnliches Schema festgelegt. Jeder Objekttyp wird in eine extra Collection gespeichert. Die Informationen über die Verknüpfungen werden im Gegensatz zu MySQL die Dokumente implementiert. In der Abb. 26: DB - Schema mit Collections und Docs wird in das Dokument „Kraftwerk_800MW_0“ aus der Collection „Kraftwerke“ mit einem Dokument „Umspannwerk_M/HH_800_0“ aus der Collection „Umspannwerke“ verknüpft. Für genauere Funktion von Referenzen s. Kap. Interner Aufbau des MongoDB - Dateisystems. In der oben genannten Abbildung ist dies in der Zeile „Ref-Umspannwerk“ veranschaulicht. Außerdem besteht die Möglichkeit mithilfe von Visualisierungssoftware durch Referenzen von einem Dokument zum referenzierten Dokument zu springen und so entlang den Referenzen zu navigieren. 54 Kapitel 4: Datenbankentwurf Es wäre aber auch möglich alle Stromsystemkomponen in einer Collection zu speichern und nur die besonders langen Informationen, wie z.B. Beschreibung eines Objektes in eine zusätzliche Collection auszulagern und mit Referenzen miteinander zu verknüpfen. Dies würde eine performante Such- und Leseabfragen von Stromsystemkomponenten gewährleisten und durch die Referenzen eine Abfrage von verlinkten Informationen ermöglichen. Es wäre auch denkbar, möglichst viele Informationen in ein Dokument als mehrere Embedded Documents (auch als Unterdokumente von Unterdokumenten) zu speichern, um Referenzen auf andere Collections zu ersparen, aber es darf nicht außer Acht gelassen werden, dass ein Dokument maximal 16 MB sein darf und dadurch Performance von Suchabfragen leiden würde. Somit entstehen (Abb. 26: DB - Schema mit Collections und Docs) vier Collections: Kraftwerke, Umspannwerke, Verbraucher und Leitungen. Für eine bessere Übersicht wurde bei jedem Dokument eine eigene _Id definiert. Dies bringt keine Nachteile mit sich, außer dass Bediener darauf achten müssen, dass es keine doppelte _Ids gibt. Für ausführliche Erläuterung s. Kap. 3.1.1. Interner Aufbau des MySQL - Dateisystems. Sollte vom Bediener ein Dokument mit einer bereits vorhanden _Id erstellt werden, wird das DBMS das bereits vorhandene Dokument ersetzen. Dies wird ausschließlich zur besseren Darstellung der Inhalte einer DB gemacht. Zukünftig soll die Aufgabe zur Generierung und Vergabe einer _Id das DBMS übernehmen. Allerdings können solche Dokumente nur mühsam mit Visualisierungssoftware benutzt werden, da anstatt „Kraftwer_800MW_0“ eine automatisch generierte Zahlenfolge stehen würde. Dies hat eine Auswirkung auf die Referenzierung von Dokumenten. Die _Ids wurden von DBMS automatisch generiert und sind dem Benutzer nicht bekannt. Daher müssen sie zuerst aus dem Dokument, auf das eine Referenz angelegt werden soll, ausgelesen werden. 55 Kapitel 4: Datenbankentwurf Abb. 26: DB - Schema mit Collections und Docs 56 Kapitel 4: Datenbankentwurf 4.5.3. DATENBANKGRAPH NEO4J Das DBMS Neo4j ist genauso wie das DBMN MongoDB schemafrei. Hier bietet sich an, jedes Objekt als einen Knoten darzustellen und die Verbindungen in Form von Freileitungen oder Kabel als Kanten. In Neo4j besteht keine Möglichkeit Hyperknoten (Zusammenfassung von Knoten zu einem imaginären Knoten) zu bilden, so dass keine Knotencluster entstehen. Alle Knoten, unabhängig vom Typ oder Art, befinden sich somit in einer Menge mit allen weiteren Knoten. Abb. 27: Haus, Leitungen und Verbraucher als Graph In der Abb. 27: Haus, Leitungen und Verbraucher als Graph ist ein Haus als großer Knoten in der Mitte und einzelnen einphasige Verbraucher (rote Knoten) des Hauses dargestellt. Drei weiterführende Knoten können z.B. drei kleine Kraftwerke mit jeweiligen Fernwirkgeräten (z.B. Funkrundsteuerempfänger) zur ferngesteuerten Reduzierung der Einspeiseleistung sein. Mehrere solche miteinander verbundene Graphen bilden das Niederspannungsnetz. Umspannstationen werden ebenfalls als Knoten dargestellt und mit Kanten zu jeweiligen Verbraucher bzw. Erzeuger verbunden. 57 Kapitel 5: Implementierung 5. IMPLEMENTIERUNG 5.1. JAVA ALS HOCHSPRACHE Java ist eine objektorientierte Hochsprache, welche aus den Sprachen C++ und Smalltalk hervorgegangen ist. Java wurde 1995 von dem Erfinder James Gosling das erste Mal der Öffentlichkeit vorgestellt. Aktuell ist Version 7, wobei zuletzt in der Version 5 größere Änderungen vorgenommen worden sind. [29] Ziel der Sprache ist es, so wenige Implementierungsabhängigkeiten wie möglich im Quellcode zu haben, d.h. möglichst viel Code weiterzuverwenden. Java ist im Gegensatz zur Sprache C++ vollständig plattformunabhängig, da der Compiler Bytecode erzeugt, welcher in der JVM (Java Virtual Machine) ausgeführt wird. Dieser Bytecode kann nach einmaliger Erzeugung auf jeglicher Plattform ausgeführt werden, für die eine JVM existiert. Es gibt neben der von Oracle bereitgestellten JVM auch noch freie JVM, die häufig in Linuxdistributionen aus Copyrightgründen als Defaultinstallation mitgeliefert werden. [30] 5.2. NETBEANS ALS ENTWICKLUNGSUMGEBUNG NetBeans (www.netbeans.org) IDE ist eine in Java programmierte Entwicklungsumgebung für die Sprachen Java SE, FX, EE, ME, HTML5, C/C++, Groovy und PHP. Sie unterliegt der GNU GPL und wird von vielen Entwicklern verwendet. NetBeans entstand aus einer Initiative von Sun Microsystems im Jahr 2000, die vor der Übernahme durch Oracle im Jahr 2008 nun von Oracle finanziert wird. Wie jede Entwicklungsumgebung stellt auch NetBeans die üblichen Funktionen, wie schreiben, compilieren, testen und debuggen zur Verfügung. NetBeans kann im Vergleich zu proprietären IDEs mit Plug-Ins erweitert werden. Aufgrund des Lizenzierungsmodells unterliegt NetBeans keinen Nutzungsbeschränkungen. 58 Kapitel 5: Implementierung 5.3. ERZEUGUNG VON TESTDATEN Daten von den erzeugten Objekten und seinen Eigenschaften wurden wie im Bild oben festgelegt. Die Zahl der Häuser als Endverbraucher wird variabel gehalten, um Performancemessungen mit unterschiedlicher Anzahl von Objekten durchführen zu können. 59 Kapitel 6: Datenbank APIs 6. DATENBANK APIS 6.1. API Eine API (application programming interface) ist ein Protokoll, welches zur Kommunikation verschiedener Softwarekomponenten untereinander eingesetzt wird. Unter einer API versteht man ein Paket, in der Regel bestehend aus Routinen, Datenstrukturen, Objekten, Klassen und Variablen. Das Aussehen einer API kann sehr vielfältig sein, es kann internationalen Standards wie beispielsweise POSIX (Portable Operating System Interface, IEEE Std 1003.11988) oder herstellerspezifischen Vorgaben wie z.B. der Microsoft Windows API entsprechen. Eine API wird in der Regel für jeweils eine Programmiersprache zur Verfügung gestellt. Im Gegensatz zur ABI (application binary interface) welche binärbasiert ist, ist eine API quellcodebasiert. 6.2. DATENBANK APIS Eine Datenbankschnittstelle, ist eine Programmierschnittstelle API genannt, die die Kommunikation zwischen einem Programm und einem Datenbanksystem ermöglicht. Damit können Datensätze erzeugt, verändert, gesucht oder auch angezeigt werden. 6.2.1. SCHNITTSTELLE FÜR MYSQL Für die Kommunikation mit dem MySQL Datenbankmanagementsystem wurde die Datenbankschnittstelle JDBC (Java DataBase Connectivity) [31] verwendet. Es handelt sich um eine einheitliche Schnittstelle für relationale Datenbanksysteme. Damit werden Zugriffe auf Datenbanken mit Java ermöglicht. Auf die Verwendung einer herstellerspezifischen Schnittstelle wurde verzichtet, da es für die Entwicklung eines Java - Programmes einen zeitlichen Mehraufwand bedeuten würde und bei den weiterführenden Arbeiten mit dem entwickelten Programm eine Einarbeitung vom Personal erforderlich wäre. 60 Kapitel 6: Datenbank APIs 6.2.2. NEO4J UND MONGODB API Für die Verwaltung der DBMS steht eine herstellerspezifische Schnittstelle für Java zur Verfügung. Version 2.2.0 stellt ein Framework vor. Es soll einfach und schnell zu benutzen sein, es übernimmt teilweise die Verwaltung von Variablen und Konstanten und verzichtet auf komplexe Map-Reduce Verfahren. Das Framework ist in C++ geschrieben worden. Folgendes Beispiel verdeutlicht die Verwendung von Konsolenbefehlen von MongoDB in Java. [32] { "_id" : ObjectId("503d5024ff9038cdbfcc9da4"), "employee" : 61, "department" : "Sales", "amount" : 77, "type" : "airfare" } Neo4j verwendet ähnlichen Syntax. Beispiele hierfür befinden sich im Anhang auf der CD. 61 Kapitel 7: Benchmarkentwurf 7. BENCHMARKENTWURF Für die Durchführung der Performancemessungen werden Festlegungen zur Abbildung der Objekte in jedem DBMS getroffen und ein Programm für die Auswertung der Messergebnisse entwickelt. 7.1. VORAUSSETZUNGEN EINES BENCHMARKS Jedes Objekt wie z.B. ein Kraftwerk oder ein Umspannwerk in jeder Datenbank besitzt gleiche Eigenschaften wie Spannungsebene, Orte, Kraftwerkstyp, Kraftwerksname und Bemessungsleistung. Auf die Erstellung von Unterdokumenten in MongoDB wird aufgrund eines anderen Aufbaus im Vergleich zu relationalen Datenbank verzichtet, um hier gleiche Bedingungen für die Benchmarks herzustellen. Grundsätzlich besteht die Möglichkeit in MongoDB, Adressen nicht in eine externe Tabelle bzw. externe Dokumente auszulagern und Referenzen zu setzen, sondern als Embedded Documents darzustellen. Es ist in zukünftigen Arbeiten zu diskutieren, ob dieses Verfahren hier sinnvolle Anwendung findet. Ein alternatives Verfahren zur Speicherung von Dokumenten ist unter Kap. 4.5.2 Datenbankmodell MongoDB ausgeführt. Alle Performancemessungen werden auf einem identischen Testsystem durchgeführt. Die Systemkonfiguration (8.4 Versuchsaufbau) ist identisch, die Datenbanken werden von einer zweiten magnetischen Festplatte geladen. Der größte Teil der elektrischen Verbraucher liegt in der Niederspannungsebene. Aus diesem Grund wird die Häuseranzahl mit ihren Eigenschaften variabel gestaltet, um elektrische Netze verschiedener Größen untersuchen zu können. 62 Kapitel 7: Benchmarkentwurf 7.2. DURCHFÜHRUNG UND AUSWERTUNG Abfragezeiten werden mit einem für diesen Zweck selbst entwickelten Java Programm (siehe Anhang a-f) erfasst und in einer Text - Datei gespeichert. Um möglichst reale Ergebnisse zu bekommen, wird jeder Test mehrfach (n=50) durchgeführt und schließlich ein arithmetischer Mittelwert aus den Ergebnissen gebildet. Eine manuelle Auswertung der Textdateien würde sehr viel Zeit in Anspruch nehmen. Dieser Prozess wird aus Effizienzgründen automatisiert. Dafür wird ein Programm in AutoIt (www.autoitscript.com/site/autoit), einer BASIC ähnlichen Scriptsprache erstellt. Dieses sucht alle Messwerte aus einer Textdatei heraus und stellt sie in tabellarischer Form dar. Abb. 28: Autokonvertier in AutoIt Danach können die Messwerte in eine Excel - Tabelle kopiert werden. Nach einer Anpassung der Messwerte mit VBA (Visual Basic for Applications) in Excel können diese ausgewertet und graphisch dargestellt werden. 63 Kapitel 8: Durchführung der Performancemessung 8. DURCHFÜHRUNG DER PERFORMANCEMESSUNG 8.1. INBETRIEBNAHME Alle Software wurden mit einem Windows - Betriebssystem verwendet. MongoDB erfordert einen besonderen Start über die Console mit der Angabe eines Pfades der Datenbank. Aus diesem Grund wurde eine Batch - Datei erstellt um nicht bei jedem Start den Pfad der Datenbank eingeben zu müssen. 8.2. DURCHFÜHRUNG EINES BENCHMARKS Es werden folgende Benchmarks durchgeführt: - Schreibvorgang verschiedener Anzahl von Objekten - Lesevorgang aller Objekte incl. Eigenschaften unterschiedlich großer Modelle - Suchvorgang nach bestimmten Objekten unterschiedlich großer Modelle. 8.3. LOGGING FÜR DOKUMENTATION DER BENÖTIGTEN ZEIT Für die Erfassung der Zeit für jeden Schreib- bzw. Abfragevorgang, wurde in Java eine Klasse zum Protokollieren des Programmablaufes erstellt. Damit lassen sich Zeiten vor und nach dem jeweiligen Schreib-, bzw. Lesevorgang erfassen. Die Differenz der erfassten Zeiten bildet die Dauer des Messvorganges. Die Zeitstempel, sowie die Messdauert werden, wie in Abb. 29: Ausschnitt aus der Logdatei dargestellt, in eine Textdatei geschrieben. Das Programm gibt die Zeit in Millisekunden zurück. Abb. 29: Ausschnitt aus der Logdatei 64 Kapitel 8: Durchführung der Performancemessung Die Textdatei wird im Unterverzeichnis log des Projektverzeichnisses gespeichert. Die erstellte Datei wird nach aktuellem Datum benannt. Existiert bereits die Textdatei, wird sie geöffnet und die neuen Messergebnisse werden den alten angehängt. Für die Wiederverwendbarkeit des Loggers in weiteren Projekten sind verschiedene Loglevels implementiert, unterschiedlichen Stellen so dass Meldungen verwendet nach werden Ihrer können. Wichtigkeit So an wurden Bedienerinformationen über den Startvorgang der Messung oder Informationen über das Ergebnis mit dem Level „INFO“ gespeichert und die unwichtigen Zeitstempel, die ausschließlich der Plausibilitätsprüfung dienen, mit dem Loglevel „FINE“. [40, S. 1315ff] 8.4. VERSUCHSAUFBAU Getestet wird das Geschwindigkeitsverhalten der drei DBMS, in Hinsicht auf Schreib und Lesegeschwindigkeit. Der Test wird durch ein eigens hierfür entwickeltes Java Programm ausgeführt. Das Programm führt die zu erledigenden Aufgaben (Schreib-, oder Abfragezyklen) durch und gibt die dafür benötigte Zeit in Millisekunden zurück. Die Tests werden auf einem System mit folgender Konfiguration durchgeführt (Abb. 30: Konfiguration des Testsystems): CPU: Intel Core AMD, RAM: 2048 MB, HDD: 2 x Western WDC10EARX 1000GB / 300MBps OS: Windows7 - 32bit Abb. 30: Konfiguration des Testsystems 65 Kapitel 8: Durchführung der Performancemessung Um einen Performanceverlust vorzubeugen, werden die zu bearbeitenden Dateien von einer Festplatte gelesen und auf eine andere geschrieben. Es wurden verschiedenste Tests bzgl. Schreib- und Lesegeschwindigkeit (Einzel- und Gesamtlesezyklus) durchgeführt. Aber auch das allgemeine Verhalten der Datenbank wurde getestet. Eine genaue Übersicht aller Test ist im Kap. 8. Durchführung der Performancemessung zu finden. 66 Kapitel 8: Durchführung der Performancemessung 8.5. BESONDERE HINWEISE MongoDB bringt keine Software zur Darstellung der vorhandenen Dokumente und ihrer Inhalte mit sich. Daher wurden zwei weitere Software zur Visualisierung der gespeicherten Daten verwendet. „MongoVUE“ liefert Datenbankinhalte incl. Datentypen in einer tabellarischen Form, wie man es von einer relationalen Datenbank gewohnt ist. Das Programm „MongoExplorer“ stellt die vorhandenen Dokumente und ihre Relationen zueinander graphisch dar. Der Anwender kann den Relationen folgen und somit durch die Dokumente und Collections einer Datenbank navigieren. Eine Besonderheit dieses Programmes ist, dass man keine Datentypen der einzelnen Werte auslesen kann. Die graphische Darstellung des graphenorientierten Datenbankmanagementsystems Neo4j war nicht ausreichend und bei größeren Datenbanken undurchschaubar. Aus diesem Grund wurde eine weitere Möglichkeit in Betracht gezogen Graphen und ihre Beziehungen darzustellen. „Gephi“ bietet die Möglichkeiten Graphencluster zu bilden und mit verschiedenen Algorithmen auf verschiedene Arten zu visualisieren. Es kann die Detailstufe der Graphendarstellung durch den Benutzer gewählt werden und Analyse des Graphes anhand Eigenschaften von Knoten (z.B. Analyse der vorhandenen Kantentypen oder Anzahl von Kanten bestimmter Knoten uvm.) durchgeführt werden. Die größte Herausforderung stellt die unterste 400 V Ebene dar, da die Verbraucherzahl deutlich die Zahl der Umspannwerke sowie der Kraftwerke übersteigt. Daher wird auf diese Ebene Schwerpunkt gelegt und noch zusätzlich zum erstellten Model eine Messung mit sehr vielen Zeilen (Dokumenten) einer Tabelle (Collection) zum Beispiel als Häuser in der Tabelle Verbraucher durchgeführt. 67 Kapitel 8: Durchführung der Performancemessung 8.6. TESTTABELLEN Ergebnisse der durchgeführten Messungen werden in folgenden Kapiteln tabellarisch dargestellt und diskutiert. 8.6.1. SPEICHERUNG Es wurden Messreihen mit einer steigenden Anzahl von Objekten durchgeführt (Tab. 1: Schreibperformance - Alle Datensätze). Ein Objekt besteht aus den Attributen: Haus, Lage, Besitzer, Verbrauch. Die für die Speicherung durchschnittlich benötigte Zeit wurde messtechnisch erfasst und statistisch ausgewertet. Tab. 1: Schreibperformance - Alle Datensätze Es ist offensichtlich, dass die NoSQL - Datenbanksysteme eine signifikant höhere Performance beim Speichern gleicher Objekte aufweisen (Abb. 31: Speicherung von Objekten – Gesamtkomposition). 68 Kapitel 8: Durchführung der Performancemessung Abb. 31: Speicherung von Objekten – Gesamtkomposition 69 Kapitel 8: Durchführung der Performancemessung 8.6.2. EXTREMA Bei der Durchführung dieser Performancemessung wurde festgestellt, dass das Datenbanksystem Neo4j am stärksten den PC ausgelastet hat. Ebenfalls weist Neo4j ein ungleichmäßiges Schreibverhalten im Vergleich zu den zwei weiteren Datenbanksystemen auf (Abb. 32: Schreibvorgang Neo4j - 1000 Messungen). Abb. 32: Schreibvorgang Neo4j - 1000 Messungen Es sind viele unterschiedlich große Messabweichungen vorhanden. Diese treten mit steigender Anzahl an Datensetzen häufiger auf und werden größer. In der oberen Abbildung ist das Schreibverhalten des DBS Neo4j abgebildet. Es wurden 2000 Knoten mit jeweils drei Attributen pro Datensatz erstellt. Nach jedem Datensatz wurde die Zeit gestoppt und aufgezeichnet. Der Datensatz wurde 1000mal hintereinander geschrieben. Insgesamt wurden 2 Mio. Knoten erzeugt. In der zweiten Hälfte der Abbildung, also ab ca. 600. Wiederholung des Schreibvorgangs ist eine Anhäufung großer Ausreißer zu beobachten. Diese liegen ungefähr mit Faktor 60 über dem Durchschnitt. Es ist zu erwähnen, dass bei der 600. Wiederholung in der Summe 600.000 Knoten in einem Durchlauf erzeugt wurden. 70 Kapitel 8: Durchführung der Performancemessung Daraufhin wurde das Verhalten der Auslastung des Arbeitsspeichers beobachtet. Es hat sich herausgestellt, dass bis ca. 600. Wiederholung des Schreibvorganges das Arbeitsspeicher rampenförmig bis zur Obergrenze befühlt wurde. Dies hat zur Folge, dass das DBS die Daten auf die Festplatte auslagern musste und dadurch die Anhäufung großer Ausreißer verursachte. Um die Hardwareabhängigkeit des Verhaltens des Datenbanksystems zu belegen, wurden gleiche Tests auf zwei weiteren Testsystemen durchgeführt (Abb. 33: Schreibvorgang Neo4j - 1000 Messungen - Testsystem 2). Es hat sich herausgestellt, dass bei Verwendung performanter Testsysteme, Messabweichungen seltener auftreten und diese deutlich kleiner sind. Die unterstehende Abbildung stellt das Ergebnis eines Benchmarks mit einem Testsystem, welches folgende Konfiguration besitzt, dar: Intel Core i5, 4 x 3,22GHz, 6 GB RAM, Hitachi 1000GB (3GB/s) Windows7 64 bit Abb. 33: Schreibvorgang Neo4j - 1000 Messungen - Testsystem 2 Es ist ein deutlicher Unterschied zum vorherigen Test zu erkennen. Die Ausreißer kommen seltener vor und sind wesentlich kleiner. Sie sind auf die treppenförmige Arbeitsspeicherauslastung des PCs durch das DBS zurückzuführen (Abb. 34: Auslastung des Arbeitsspeichers und des Prozessors mit Neo4j). Die Einzelheiten und 71 Kapitel 8: Durchführung der Performancemessung Hintergründe des Arbeitsspeicherverhaltens mit DBS Neo4j können in einer weiterführenden Arbeit genauer untersucht werden. Abb. 34: Auslastung des Arbeitsspeichers und des Prozessors mit Neo4j Aufgrund eines besseren Verhaltens von Datenbanksystemen mit der neuen Hardware werden alle weiteren Messungen auf diesem Testsystem durchgeführt. 72 Kapitel 8: Durchführung der Performancemessung Abb. 35: Schreibvorgang MongoDB - 1000 Messungen Die Datenbanksysteme MySQL (Abb. 36: Schreibvorgang MySQL - 1000 Messungen) und MongoDB (Abb. 35: Schreibvorgang MongoDB - 1000 Messungen) weisen ein ausgewogenes und gleichmäßiges Schreibverhalten, unabhängig von der benutzten Hardware auf. Abb. 36: Schreibvorgang MySQL - 1000 Messungen 73 Kapitel 8: Durchführung der Performancemessung 8.6.3. LESEN ALLER DATENSÄTZE VON BESTIMMTEN KOMPONENTEN Mit folgender Messung wurde die Zeit in ms erfasst, die jedes Datenbankmanagementsystem zum Lesen aller vorhandenen Inhalte eines Graphs und einer Tabelle bzw. einer Collection benötigt. Es wurde das oben beschriebene Stomsystemkomponentenmodell verwendet. Für die Variation der Messungen wurde die Anzahl der vorhandenen Häuser von 100 bis 500.000 erhöht. Die Eigenschaften aller Häuser sind dabei gleich geblieben bis auf die Hausnummer. Jede Messung wurde 50mal wiederholt. Aus den gewonnenen Ergebnissen wurde für jede Messreihe ein arithmetischer Mittelwert gebildet (Tab. 2: Leseperformance - Alle Datensätze). Tab. 2: Leseperformance - Alle Datensätze Es fällt sofort auf, dass das DBMS Neo4j an dieser Messung am schlechtesten abgeschnitten hat. Die Abfragezeiten liegen ca. fünffach über den Abfragezeiten des DBMS MySQL. Die Ergebnisse des zweiten NoSQL DBMS liegen nahe den Ergebnissen des DBMS MySQL. Die DBS sind ähnlich aufgebaut, eine Tabelle entspricht in etwa einer Collection und ein Eintrag in der Tabelle einem Dokument. Die Anzahl der Spalten der Tabelle entsprach in diesem Test der Anzahl der Zeilen in einem Dokument. Bei dem DBMS Neo4j wurden ebenfalls gleiche Inhalte ausgelesen, 74 Kapitel 8: Durchführung der Performancemessung allerdings wurden jedem Knoten die Inhalte als Eigenschaften hinzugefügt und schließlich abgefragt. Die graphische Auswertung der Ergebnisse (Abb. 37: Lesevorgang aller Datensätze bestimmter Objekte) unterstreicht nochmal das Ergebnis der Messung und verdeutlicht den Verlauf der Messkurve. Abb. 37: Lesevorgang aller Datensätze bestimmter Objekte Bei der Auswertung der Ergebnisse ist aufgefallen, dass die Standardabweichung der Messergebnisse bei NoSQL DBMS mit größerer Anzahl an Knoten im Verhältnis zu anderen DBMS unterschiedlich stark ausgeprägt ist (Abb. 38: Standardabweichung der Ergebnisse des Lesevorgangs). Das bedeutet, dass die Streuung der Messergebnisse um ihren Mittelwert bei den NoSQL DBS stark ausgeprägt ist, besonders bei dem graphenorientierten DBMS Neo4j. Dies ist im folgenden Bild dargestellt. Aus den Messwerten ist ein Zusammenhang ersichtlich, welcher sich auf den grundsätzlichen systematischen Aufbau der Datenbanksysteme zurückführen lässt. So sind MySQL und MongoDB in ihrer grundsätzlichen Struktur sehr ähnlich. (Kap. 3.2.1 Interner Aufbau des MongoDB - Dateisystems) 75 Kapitel 8: Durchführung der Performancemessung Abb. 38: Standardabweichung der Ergebnisse des Lesevorgangs 8.6.4. SUCHEN NACH BESTIMMTEN DATENSÄTZEN Für diesen Messverlauf wurden die bereits in der letzten Messung erstellten Tabellen, Collections bzw. Graphen verschiedener Größen genutzt, um die Datenbanken nach bestimmten Datensätzen zu durchsuchen. Es wurde nach der Hausnummer, die als fortlaufende Nummer in den DBs abgespeichert war, gesucht. Es wurden pro Messverlauf 100 Häuser gesucht. Das Schema der Abfragen wird wie folgt beschrieben: Zeilennummer in Tabelle Abfragenummer Anzahl der Einträge einer Tabelle Anzahl der Abfragen pro Messung Tab. 3: Legende Performancemessung-I Dabei ist die Abfragenummer der Durchlaufzeiger von 1 bis 100, die Anzahl der Einträge beschreibt die Anzahl der Zeilen einer Tabelle bzw. eines Dokumentes in einer Collection und die Anzahl der Abfragen wurde auf 100 pro Messung festgelegt. Da die Graphdatenbanken keine Tabellen oder Collections besitzen, bezieht sich die 76 Kapitel 8: Durchführung der Performancemessung Zeilennummer auf einen Knoten und die Anzahl der Einträge in einer Tabelle auf die Anzahl der Knoten in einem Graphen. So wurden DBs verschiedenen Größen untersucht. Das Ergebnis kann folgender Tabelle entnommen werden: Tab. 4: Suchperformance – Bestimmte Datensätze Die Hauptkomponenten eines Graphen in DBMS Neo4j werden Verbraucher aus dem Niederspannungsnetz sein, z.B. Häuser oder auch Einzelverbraucher eines Hauses, da ihre Anzahl am größten ist. Dieses würde eine Expansion des Graphen zur Folge haben und die Performance mit zunehmender Anzahl negativ beeinflussen (Tab. 4: Suchperformance – Bestimmte Datensätze). Die Ursache hierfür ist bei wachsenden Graphen dadurch begründet, dass auch einfache Abfragen längere Zeit in Anspruch nehmen, da alle Knoten sich in einem Cluster befinden. Vergleicht man in MySQL alle Objekte von Kraftwerk bis Einzelverbraucher durch suchen in einer Tabelle, sieht das Ergebnis genauso aus. In Abb. 39: Suchvorgang nach bestimmten Datensätzen ist der graphischer Verlauf der Messergebnisse dargestellt. Die DBMS MongoDB und MySQL haben annährend 77 Kapitel 8: Durchführung der Performancemessung sehr ähnlichen Verlauf, wobei MySQL bei jedem Suchvorgang etwas besser abgeschnitten hat. Abb. 39: Suchvorgang nach bestimmten Datensätzen Die Streuung der Messergebnisse ist in der nachfolgenden Abb. 40: Standartabweichung beim Suchvorgang bestimmter Datensätze graphisch dargestellt. Es ist ersichtlich, dass die Standabweichungen sehr stark variieren, was einen Vergleich schwierig macht. Betrachtet man letzte drei Ergebnisse (von den Größten Tabellen bzw. Graphen), so stellt sich heraus, dass MongoDB eine höhere Streuung der Ergebnisse als MySQL gezeigt hat. 78 Kapitel 8: Durchführung der Performancemessung Abb. 40: Standartabweichung beim Suchvorgang bestimmter Datensätze 79 Kapitel 8: Durchführung der Performancemessung 8.7. FAZIT Alle Messungen für die Schreib-, Lese- und Suchvorgänge mit drei vorgegeben DBMS unterschiedlich großer Datenbanken wurden erfolgreich durchgeführt. Die Ergebnisse wurden analysiert und miteinander verglichen. Die Kommunikation mit den DBMS erfolgte ausschließlich über die herstellerspezifischen Java-Schnittstellen. 80 Kapitel 9: Evaluation 9. EVALUATION Die erhobenen Messwerte werden miteinander verglichen und ausgewertet, hierbei wird auf eventuelle Probleme bei der Durchführung und zukünftigen Anwendungen eingegangen. 9.1. BEWERTUNG Die in der Bachelorarbeit durchgeführte Analyse erfüllt die gestellten Anforderungen in allen Punkten. Es können Stromsystemmodelle in den Datenbanksystemen gespeichert und von dort ausgelesen werden. Abfragezeiten von Datenbanken unterschiedlicher Größen wurden erfasst, analysiert und miteinander verglichen. Aus den Performancemessungen resultiert, dass DBMS MongoDB als performantester Kandidat der Schreibgeschwindigkeitsmessungen hervorging. Das DBMS MySQL hat ebenfalls ein sehr stabiles sequentielles Schreibverhalten, benötigt aber mehr als die fünffache Zeit für einen Datensatz gleicher Größe. Die Performancemessung des Leseverhaltens aller Informationen einer Tabelle bzw. eines Graphen zeigt, dass DBMS Neo4j am langsamsten abgeschnitten hat. Die Ergebnisse der beiden vorherigen DBMS liegen etwa gleich auf, jedoch weist das DBMS MySQL geringere Abweichungen vom Mittelwert auf. NoSQL Datenbankmanagementsysteme sind schemafrei, daher lassen sich Dokumente bzw. Knoten im Gegenteil zu den statischen Tabellen wie bei MySQL bei Bedarf dynamisch erweitern. In einer relationalen Datenbank müsste dafür eine neue Tabelle erstellt werden und durch das Setzen von Referenzen könnte dies ebenfalls realisiert werden, womit jedoch ein höherer, nachträglicher Programmieraufwand erforderlich ist. Die graphenorientierten Datenbanken lassen sich sehr gut mit verschiedenen Tools wie z.B. Gephi (www.gephi.org) visualisieren. Mit bestimmten Eigenschaften versehene Relationen eines Objektes zu einem anderen Objekt stellen im Stromsystemmodell gleichzeig die Stromleitungen dar. Dies bringt Transparenz und geringeren Programmieraufwand bei der Erstellung eines Datenmodells. 81 Kapitel 9: Evaluation Entsprechend der für das Graphdatenbanksystem Neo4j erhobenen Ergebnisse, eignet es sich sehr gut für Projekte die eine hohe Knoten- und Verknüpfungszahl fordern, da eine Modellierung in Graphenform möglich ist und eine Vielzahl an Beziehungen ohne großen Aufwand implementiert werden kann. MongoDB ist vorzugsweise auf horizontale Skalierbarkeit ausgelegt. Eine Methode der horizontalen Skalierung ist Sharding (Lastverteilung). Damit lässt sich eine Datenbank auf mehrere Server aufteilen und so kann die Auslastung verteilt werden. Die Kommunikation mit den DBMS erfolgte ausschließlich über die herstellerspezifischen Java-Schnittstellen. Ein weiterer Aspekt sind die unterschiedlichen Entwicklungsstände der DBMS. MySQL ist bereits seit vielen Jahren etabliert und ein Standard. Das DBMS ist somit ausgereift und bietet eine Vielzahl von Dokumentationen und Literatur. Die NoSQL Lösungen werden weiterentwickelt, sie bekommen neue Funktionen und etliche Verbesserungen. Zum Beispiel verspricht die neue Version (2.4) des MongoDB DBMS neben Verbesserungen, die Abfragen beschleunigen sollen, Volltextsuchfunktion, Felder mit fester Länge (capped Arrays) für bequemeres Arbeiter und bessere GeoFunktionen. Zählfunktion anhand der Indizes sind um das Zwanzigfache schneller als bisher. [41] Die Datenbanksysteme sind zu unterschiedlich, um einen kongruenten Vergleich zu ziehen. Es unterscheiden sich die Programmier-AIPs, der grundsätzliche Interne Aufbau, der Abfragesyntax, Funktionsumfang, Indizierungsfunktionen und Skalierungsmöglichkeiten hier zu stark. Ein Beispiel hierfür wäre, die softwareseitige Limitierung seitens der Java VM; Neo4j ist hier sehr stark systemabhängig. 82 Kapitel 9: Evaluation 9.2. AUSBLICK Für zukünftige Arbeiten wäre eine Einbindung realer Messdaten denkbar, derzeit liefert das Programm nur Beispieldaten, sowie: Durchführung der Messungen mit einer einheitlichen Schnittstelle JPA. Messung bei der Benutzung mehrerer Clients und gleichzeitiger Zugriffe auf eine DB Der Datenschutz der Datenbanken muss juristischen Anforderungen entsprechen. Hierzu sind jedoch Investitionen in Hardware und Kryptoanalytiker notwendig. Vergleich der bisherigen Performancemessungen im Rahmen des Projekts GDS SE (security environment) mit Performancemessungen über VPN Verbindungen. Diese werden nach derzeitigem Stand ab Juli 2013 von Alexander Kramer unter anderem im Rahmen seiner Bachelorthesis am IAI durchgeführt. 83 Anhang ANHANG Die folgenden Seiten beinhalten den Quellen Literaturverzeichnis Anlagenverzeichnis Raum Notizen i Quellen und Literaturverzeichnis QUELLEN UND LITERATURVERZEICHNIS Beschreibung Quelle [1] KIT [2] IAI [3] IAI http://www.kit.edu/kit/struktur.php [2013-02-20] http://www.iai.kit.edu/www-extern/fileadmin/PDF/IAI_Druckversion.pdf [2013-02-20] http://www.iai.kit.edu/www-extern/ [2013-02-20] [4] Datenbanksystem Datenbankkonzepte in der Praxis, Addison-Wesley, Sönke Cordts Einstieg in SQL, Marcus Throll, Oliver Bartosch, Galileo Computing, 4 DBRMS Auflage Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken, Hanser, Stefan NoSQL Edlich, 2.Auflage Elektrisches Netz Elektroenergieversorgung, Jürgen Schlabbach, 3. Auflage, VDE Verlag Elektroenergiesysteme- Erzegung, Transport Übertragung und Verteilung Elektrisches Netz elektrischer Enegrie, Adolf Schwab, 2.Auflage Atomgesetz http://www.gesetze-im-internet.de/bundesrecht/atg/gesamt.pdf http://www.eeg-aktuell.de/wp-content/uploads/2010/07/EEGEEG konsolidierte-unverbindliche-Fassung.pdf Energiewende http://www.netzentwicklungsplan.de/content/stromnetze Elektrische Energieversorgung 2: Energie- und Elektrizitätswirtschaft, HEO-Funktionen Kraftwerktechnik, alternative Stromerzeugung, Dynamik, Regelung und Stabilität, Betriebsplanung und -führung Java und Java und Datenbanken, Anwendungsprogrammierung mit JDBC, Servlets Datenbanken und JSP, Wolfgang Dehnhardt, Verlag Hanser EN50160 [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] SQL SQL für Dummies, Allen G. Taylor, 5.Auflage, Wiley-VCH Verlag [16] MongoDB MongoDB Sag ja zu NoSQL, Marc Boeker, entwickler.press, 2010 http://stackoverflow.com/questions/10756002/fetching-documents-frommongo-collection-using-karras# [2013-01-15] http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-javadriver/#gsc.tab=0 Sieben Wochen, sieben Datenbanken, Moderne Datenbanken und die NoSQL-Bewegung, Eric Redmond & Jim R.Wilson, O'reilly, 2012 [17] MognoDB MongoDB mit [18] Java [19] DBS [20] Neo4j http://www.neo4j.org/learn/nosql [2013-02-10] Elektrische Energieversorgung, Klaus Heuck, Detlef, Schulz, 8. Auflage, [21] Elektrisches Netz Teubner Verlag [22] Elektrisches Netz Script aus der Vorlesung Elektrische Anlagen und Netze, G.Lipphardt, 2009 http://www-is.informatik.uni-oldenburg.de/publications/2440.pdf, [2013[23] CIM 04-01] [24] CIM http://de.wikipedia.org/wiki/IEC_61970 [25] CIM IEC 61970 http://smart-energy.blog.de/2010/10/08/ewe-setzt-cim-enterpriseservice-bus-9561225 [2013-04-01] Datenbanken Theorie, Entwurf und Programmierung relationaler Datenbanken, 2. Auflage, Matthias Schubert, Teubner Verlag [26] CIM [27] SQL [28] Elektrische Netze Java versions [29] history Java [30] Technetwork Java Technetwork [31] JDBC [32] MongoDB Elektrische Kraftwerke und Netz, D.Oeding, B.R.Oswald, 7.Auflage http://www.codejava.net/java-se/java-se-versions-history http://www.oracle.com/technetwork/java/javase/overview/javahistoryindex-198355.html http://www.oracle.com/technetwork/java/javase/jdbc/index.html http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-frameworkwith-java-driver/ ii Quellen und Literaturverzeichnis [34] SQL International Workshop in Applied Measurements for Power Systems, Amps 2012 Proceedings, IEEE Catalog Number CFP12AMS-CDR, S. 143ff SQL für Dummies, Allen G. Taylor, 2.Auflage, Wiley-VCH Verlag [35] Energieträger Script aus der Vorlesung, Elektrische Anlagen und Kraftwerke, G.Lipphardt. [40] Java Java mehr als eine Insel, Christian Ullenboom, Galileo Computing, 1. Auflage http://www.heise.de/ix/meldung/MongoDB-bekommt-Volltextsuche-undbessere-Geo-Funktionen-1825419.html [2013-04-01] [33] EASiMoV [41] MongoDB iii Anlagenverzeichnis ANLAGENVERZEICHNIS a. Quellcode Java Programm Verwaltung MongoDB .................................................................... v b. Quellcode Java Programm Verwaltung MySQL ......................................................................... v c. Quellcode Java Programm Verwaltung Neo4j ............................................................................ v d. Quellcode Java Programm Benchmarks MongoDB .................................................................. v e. Quellcode Java Programm Benchmarks Neo4j .......................................................................... v f. Quellcode Java Programm Benchmarks MySQL ......................................................................... v iv Anlagenverzeichnis a. QUELLCODE JAVA PROGRAMM VERWALTUNG MONGODB sind auf beiliegendem Datenträger enthalten b. QUELLCODE JAVA PROGRAMM VERWALTUNG MYSQL sind auf beiliegendem Datenträger enthalten c. QUELLCODE JAVA PROGRAMM VERWALTUNG NEO4J sind auf beiliegendem Datenträger enthalten d. QUELLCODE JAVA PROGRAMM BENCHMARKS MONGODB sind auf beiliegendem Datenträger enthalten e. QUELLCODE JAVA PROGRAMM BENCHMARKS NEO4J sind auf beiliegendem Datenträger enthalten f. QUELLCODE JAVA PROGRAMM BENCHMARKS MYSQL sind auf beiliegendem Datenträger enthalten v