Leopold-Franzens-Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme Webplattform zur Verwaltung von Schneeprofilen Bachelor-Arbeit Aleksandar Stojakovic betreut von Dipl.-Ing. Robert Binna Innsbruck, 4. November 2012 Zusammenfassung Die vorliegende Arbeit beschreibt die Entwicklung einer Webplattform zur Verwaltung von Schneeprofildaten. Es wird der Aufbau eines Schneeprofils und dessen Umsetzung in die Plattform beschrieben. Desweiteren wird die Architektur der Webplattform erklärt, aus welchen Komponenten sie besteht, wie diese Komponenten zusammenarbeiten und welche Technologien eingesetzt wurden. Abstract This paper describes the implementation of a web platform for the management of snow profile data. It describes the structure of a snow profile and how they are implemented in the platform. Furthermore, the architecture of the web platform will be explained, of what components it consists, how these components work together and witch technology is used. Inhaltsverzeichnis 1 Einleitung 1 2 Das Schneeprofil 2.1 Aufbau des Schneeprofils . . . . 2.1.1 Metadaten . . . . . . . 2.1.2 Schichtprofil . . . . . . . 2.1.3 Schneetemperaturprofil 2.1.4 Stabilitätstests . . . . . 2.2 Das CAAML-Format . . . . . . . . . . . . 3 3 4 4 6 7 8 . . . . . . . . . 11 13 14 15 16 17 17 18 19 20 . . . . . . . . . 23 23 25 26 26 27 27 29 29 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Die Architektur 3.1 Datenkonverter . . . . . . . . . . . . . . . . 3.2 Backend . . . . . . . . . . . . . . . . . . . . 3.2.1 Die Datenbank . . . . . . . . . . . . 3.2.2 Integration von CAAML-Dateien . . 3.2.3 Kommunikationsschnittstelle für den 3.3 Frontend . . . . . . . . . . . . . . . . . . . . 3.3.1 MVC-Muster . . . . . . . . . . . . . 3.3.2 Benutzerschnittstelle . . . . . . . . . 3.3.3 Schneeprofil-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client . . . . . . . . . . . . . . . . 4 Verwendete Technologien 4.1 XSL-Transformation . . . . . . . . . . . . . . . . 4.2 JSON . . . . . . . . . . . . . . . . . . . . . . . . 4.3 REST . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Prinzipien . . . . . . . . . . . . . . . . . . 4.3.2 Beispiel . . . . . . . . . . . . . . . . . . . 4.4 ExtJS . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Rhino . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Batik . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Dokumentenorientierte Datenbanken & OrientDB 5 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 III INHALTSVERZEICHNIS 6 Zusammenfassung 35 Appendix 37 A.1 Schneeprofildaten im JSON-Format . . . . . . . . . . . . . 37 A.2 Schneeprofil-Grafik . . . . . . . . . . . . . . . . . . . . . . 39 A.3 Benutzerhandbuch . . . . . . . . . . . . . . . . . . . . . . 41 Literaturverzeichnis IV 45 Aleksandar Stojakovic Kapitel 1 Einleitung Die Aufnahmen der Schneeprofile bilden die Grundlage eines Lawinenwarndienstes und ist damit ein wichtiger Faktor für die Sicherheit in den Bergen und auf den Pisten. Mit ihrer Hilfe bekommt man einen Überblick über den Aufbau der Schneedecke, welche auf Schwachschichten untersucht wird, die die Ursache für Lawinenabgänge sind. Diese Schneeprofile werden von verschiedenen Lawinenwarndiensten weltweit erhoben. Jedoch erfolgt die Speicherung der Schneeprofile unterschiedlich, da jeder LWD ein proprietäres Format dafür verwendet, was den Informationsaustausch zwischen ihnen schwierig gestaltet. Um den Datenaustausch und die Kommunikation zwischen den verschiedenen Lawinenwarndiensten zu verbessern wurde ein Standart Format für den Austausch und die Speicherung der Schneeprofile von einem internationalen Gremium bestehend aus Lawinenwarndiensten der Länder Kanada, Europa, darunter im Speziellen Schweiz und Italien, Tirol und Colorado eingeführt - den CAAML-Standard. Beim Canadian Avalanche Association Markup Language handelt es sich um ein XMLbasiertes Format, das die wichtigsten Schneeprofilinformationen beinhaltet. Um die Verbreitung des Standards zu beschleunigen und zu unterstützen ist die Verfügbarkeit freier Software notwendig, welche die vorhandenen proprietären Daten in die Plattform integriert und künftige Datenaufnahmen über die Plattform vonstatten gehen. Im folgenden wird die Umsetzung der Webplattform erklärt, dazu wird die Arbeit in drei Teile gegliedert. Kapitel 2 befasst sich mit dem Aufbau des Schneeprofils und dem CAAML-Format. Im anschließenden Kapitel wird die Architektur der Plattform beschrieben. Dabei werden die Komponenten beschrieben aus denen die Architektur besteht und wie 1 KAPITEL 1. EINLEITUNG sie miteinander kommunizieren bzw. interagieren. Im darauffolgenden Kapitel wird detailierter auf die Technologien eingegangen, mit denen sich die einzelnen Komponenten bedienen. Abschließend wird ein Ausblick gegeben, wie die Plattform zukünftig verwendet wird und welche Erweiterungen geplant sind. 2 Aleksandar Stojakovic Kapitel 2 Das Schneeprofil Ein Schneeprofil kann prinzipiell als Querschnitt durch eine Schneedecke gesehen werden. Dabei wird die Schneedecke in Schichten unterteilt und in Hinblick auf Parameter wie Härte, Kornform, Korngröße und Wassergehalt untersucht. Desweiteren wird die Schneetemperaturen gemessen und verschiedene Stabilitätstests durchgeführt um das Schneeprofil auf Schwachschichten zu untersuchen, die verantwortlich für Instabilitäten in der Schneedecke sind. Appendix A.2 zeigt und beschreibt kurz ein Schneeprofil. Dieses Kapitel beschreibt die wichtigsten Komponenten aus denen sich ein Schneeprofil zusammensetzt, welche Kriterien eine Schwachschicht auszeichnet und ihre Darstellung im CAAML-Format. 2.1 Aufbau des Schneeprofils Der Aufnahme des Schneeprofils ist in vier Sektionen unterteilt. Dazu zählen die Metadaten, das Schichtprofil, das Schneetemperaturprofil und die Stabilitätstests. Diese werden im Folgenden erklärt und es wird beschrieben welchen Einfluss sie auf die Untersuchung der Schwachschichten haben.[fSuLS] 3 KAPITEL 2. DAS SCHNEEPROFIL Abbildung 2.1: Aufbau des Schneeprofils 2.1.1 Metadaten Die Metadaten enthalten Informationen wie den Namen des Erstellers des Schneeprofils, das Erstelldatum, die Uhrzeit, den Ort (Region und Koordinaten), die Höhe über dem Meeresspiegel, Windverhältnisse, Niederschlag und sonstige Punkte, die Auskunft über die Umgebung des Profilortes und Art der Profilaufnahme geben. 2.1.2 Schichtprofil Das Schichtprofil zeigt die Unterteilung der Schneedecke bzw. des Schneeprofils in Schichten. Diese Schichten unterscheiden sich voneinander in Kornform und Korngröße, die das Kristallgefüge des Schnees beschreiben, und in Härte und Wassergehalt (Feuchte). Aus den Daten eines Schichtprofils erschließt sich der Nietentest. Der Nietentest ist der erste Schritt zur Untersuchung der Schneedecke auf Schwachschichten. [fWSuLW] 4 Aleksandar Stojakovic KAPITEL 2. DAS SCHNEEPROFIL Nietentest: Der Test dient vor allem dazu, den Schneedeckenaufbau im Hinblick auf mögliche, kritische Schwachschichten zu beurteilen. Er besteht aus sechs kritischen Punkten, wobei vier von denen, auch Schichtnieten genannt, für jede Schicht und zwei Punkte, Schichtgrenzennieten genannt, für zwei benachbarte Schichten überprüft werden. Trifft ein Kriterium zu, wird der Schicht eine Niete vergeben, das heißt es vergrößert sich das Risiko, dass diese Schicht eine Schwachschicht ist. Die Folgende Auflistung beschreibt kurz die Kriterien: Schichtnieten • Kornform: Wenn die Kornform der Schicht folgende Eigenschaften besitzt: kantige Formen, Schwimmschnee oder Oberflächenreif, dann trifft das Kriterium zu und der Schicht wird eine Niete vergeben. Auf die genauere Definition dieser Eigenschaften wird hier nicht eingegangen, da sie für die Webplattform nicht relevant sind. • Korngröße: Hierbei gilt, je größer die Korngröße, desto geringer die Festigkeit der Schicht, d.h. die Schicht ist schwächer. Das Kriterium ist erfüllt wenn die Korngröße größer als 1mm ist. • Härte: Für die Beurteilung der Härte der einzelnen Schichten betrachtet man die Handhärte. Schwache Schichten haben meist eine Handhärte Faust“ oder allenfalls eine Härte der Stufe 1 bis 2, d. ” h. Faust“ bis Vier Finger“. ” ” • Tiefe in der Schneedecke: Je geringer die Schneehöhe (oberhalb der Waldgrenze), umso schlechter ist in der Regel der Schneedeckenaufbau. In der Regel erhält eine Schicht eine Niete sobald sie tiefer als 1m in der Schneedecke positioniert ist. Schichtgrenzennieten • Korngrößenunterschied: Ein großer Korngrößenunterschied bedeutet in der Regel, dass zwei sehr unterschiedliche Schichten zusammenkommen. Somit ist es wahrscheinlich, dass die Schichtgrenze eine potenzielle Bruchfläche darstellt. Ist der Unterschied zwischen den Korngrößen größer als 3/4mm ist das Kriterium erfüllt. • Härteunterschied: Je größer der Härteunterschied zwischen zwei benachbarten Schichten ist, umso eher ist diese Schichtgrenze eine potenzielle Bruchfläche. Ein Härteunterschied von zwei oder mehr Stufen der Handhärte ist in der Regel als kritisch zu beurteilen. Aleksandar Stojakovic 5 KAPITEL 2. DAS SCHNEEPROFIL Trifft eine der beiden Kriterien für die Schichtgrenzennieten zu, so wird die Niete der unteren der beiden Schichten, die miteinander verglichen werden, vergeben. Der folgende Pseudocode veranschaulicht den Nietentest. Die Reihenfolge geschieht von der obersten Schicht bis zur Untersten, wobei jede Schicht nach den oben beschriebenen Kriterien untersucht wird. Algorithm 1 Pseudocode Nietentest Require: Schneeprofil for all Schichten do Initialize niete to zeroif kornf orm = kantigeF orm then niete + + else if kornf orm = Schwimmschnee then niete + + else if kornf orm = Oberf laechenreif then niete + + end if if korngroesse > 1mm then niete + + end if if härte > 2 then niete + + end if if schichthoehe > 1m then niete + + end if if |Schicht.korngroesse − ObereSchicht.korngroesse| < 3/4mm then niete + + end if if |Schicht.haerte − ObereSchicht.haerte| > 2 then niete + + end if end for Eine Schicht gilt als potenzielle Schwachschicht, wenn mehr als vier Nieten zutreffen. 2.1.3 Schneetemperaturprofil Anhand des Temperaturverlaufs kann abgeschätzt werden, wie ausgeprägt die aufbauende Umwandlung in der Schneedecke ist. Grundsätzlich gilt: Je höher der Temperaturgradient, desto ausgeprägter die aufbau6 Aleksandar Stojakovic KAPITEL 2. DAS SCHNEEPROFIL ende Umwandlung. Das heißt: große Kristalle werden immer größer und kleine Kristalle werden aufgelöst. Dies führt zu einem Festigkeitsverlust in der umgewandelten Schneeschicht. 2.1.4 Stabilitätstests Neben den eigentlichen Schneeprofilinformationen und dem Nietentest bilden Stabilitätstests, darunter Kompressionstest (CT), erweiterter Kompressionstest (ECT) und Rutschblocktest (RBT), eine weitere Aussagekraft über die Stabilität der Schneedecke. Bei all diesen Tests werden jeweils Blöcke der Schneedecke abgeschnitten und Bruchtests durchgeführt. Dabei werden Daten wie die Schneehöhe, Bruchart, Bruchfläche und die Belastungsstufe aufgenommen. Während die Bruchart für alle Tests die gleichen Werte besitzen kann, also kein Bruch, Teilbruch oder ganzer Block, ebenso die Bruchfläche, glatt, rau oder mittelmäßig unterscheidet sich die Belastungsstufe bei den Tests wie folgt: RB/RBT - Rutschblocktest: • RB 1. Bruch beim Graben/Ausschneiden • RB 2. Bruch beim Betreten mit Skiern • RB 3. Bruch beim Wippen mit Skiern • RB 4. Bruch beim ersten Sprung mit Skiern • RB 5. Bruch beim 2. oder 3. Sprung mit Skiern • RB 6. Bruch beim Sprung ohne Skiern • RB 7. kein Bruch Aleksandar Stojakovic 7 KAPITEL 2. DAS SCHNEEPROFIL CT - Kompressionstest: • CT 0. Block bricht während des Ausschneidens • CT 1-10. Bruch beim Fallenlassen der Hand aus der Handwurzel Handfläche trifft auf das Schaufelblatt • CT 11-20. Bruch beim Fallenlassen des Unterarms aus dem Ellenbogen - Handfläche trifft auf das Schaufelblatt • CT 21-30. Bruch beim Fallenlassen des gesamten Arms aus dem Schultergelenk - Faust trifft auf das Schaufelblatt • CT 31. kein Bruch möglich ECT - Erweiterter Kompressionstest: Die Auflistung ist hierbei analog zum CT, nur ist die Größe des ausgeschnittenen Blocks größer. • ECT 0. Block bricht während des Ausschneidens • ECT 1-10. Bruch beim Fallenlassen der Hand aus der Handwurzel - Handfläche trifft auf das Schaufelblatt • ECT 11-20. Bruch beim Fallenlassen des Unterarms aus dem Ellenbogen - Handfläche trifft auf das Schaufelblatt • ECT 21-30. Bruch beim Fallenlassen des gesamten Arms aus dem Schultergelenk - Faust trifft auf das Schaufelblatt • ECT 31. kein Bruch möglich 2.2 Das CAAML-Format Bisher verwendeten die meisten Lawinenwarndienste zur Darstellung der Schneeprofildaten ein propriäteres Format. Beispielsweise für den Lawinenwarndienst von Tirol stellt dies eine Barriere für den Informationsaustausch mit internationalen LWDs dar, da aktuell die Schneeprofildaten in einem proprietären XML-Format, das höchstem in den Ländern Tirol und Bayern Anwendung findet, gespeichert sind. Deswegen wurde ein neuer Standard für die elektronische Darstellung der Schneeprofile entwickelt, welcher weltweit nötige Informationen abdeckt, die für die Aufnahme von Schneeprofilen von Belang sind. Dieser Standard heißt CAAML. 8 Aleksandar Stojakovic KAPITEL 2. DAS SCHNEEPROFIL Der Zweck von CAAML (Canadian Avalanche Association Markup Language) ist, eine Datenstruktur zu definieren, um den elektronischen Austausch von Lawineninformationen zu unterstützen. CAAML definiert die Struktur und Elemente des Schneeprofils und spezifiziert wie die oben genannten Sektionen im Schneeprofil integriert sind. CAAML basiert auf XML1 , das etablierte Format für den Datenaustausch im World Wide Web. Für die Entwicklung werden online unter http://caaml.org ein XMLSchema und die dazu gehörige Dokumentation der Elemente und Struktur bereitgestellt. Aufgrund des jungen Entwicklungsstandes zum Zeitpunkt der Ausführung dieser Arbeit liegt aber keine offizielle Dokumentation von CAAML vor. 1 http://www.w3.org/XML/ Aleksandar Stojakovic 9 Kapitel 3 Die Architektur Für den Austuasch der Schneeprofildaten zwischen den Lawinenwarndiensten werden sowohl datenorientierte als auch grafische Formate zur Verfügung gestellt, wobei für Änderungsoperationen ausschließlich die datenorientierten Formate zulässig sind. Bei den datenorientierten Formaten handelt es sich um das CAAML-Format, das das Schneeprofil in Form von Rohdaten repräsentiert, während grafische Formate JPG-, PNG- oder PDF-Dateien sind, die die Schneeprofildaten in einem Diagramm zusammenfasst. Aufgrund der Anforderungen in Bezug auf einfache Handhabung, Wartbarkeit und an den Datenaustausch, sowohl datenorientiert als auch grafisch, wurde die Applikation zur Verwaltung der Schneeprofile als Webplattform konzipiert. Um sowohl eine hohe Interaktivität der Benutzeroberfläche als auch ein möglichst flexible Integration in andere Applikationen, wie Webportale der Lawinenwarndienste, sicherzustellen wurde eine 2-Schichten-Architektur gewählt. Die 2 Schichten bestehen dabei aus dem Backend, welche für die Persistenz und das Umwandeln der Daten zuständig ist, und dem Frontend das die Präsentationsschicht darstellt und die Daten für die Persistenz vorbereitet. Diese Architektur wird auch als Client-Server-Architektur bezeichnet. Der Server kümmert sich um die Datenbankanbindung, also um die Persistenz, und ist zuständig für die Umwandlung der Daten, sei es, ob die Daten in die gewünschten Ein- und Ausgabeformate exportiert bzw. importiert werden sollen oder die Schneeprofil-Grafik als PDF zum Download bereitgestellt wird. Der Client ist nach dem MVC-Muster aufgebaut, das die Benutzerschnittstelle und ein Model des Schneeprofils erstellt. Außerdem führt der Client notwendige Berechnungen durch um die Daten für die Persistenz vorzubereiten. 11 KAPITEL 3. DIE ARCHITEKTUR Der Austausch der Daten zwischen Client und Server geschieht über eine REST-Schnittstelle. Diese REST[Fie00]-Schnittstelle stellt dabei CRUD-Funktionalitäten zur Verwaltung der Schneeprofile und Benutzer zur Verfügung. CRUD bezeichnet im Allgemeinen Datenbankoperationen Create, Read, Update und Delete. Da REST in der Plattform als HTTP-Schnittstelle verwendet wird, werden die Bezeichnungen der HTTP-Operationen verwendet - GET, POST, PUT und DELETE. Eine Operation in Kombination mit einer URL stellt für den Client die Möglichkeiten dar, entweder auf Ressourcen zuzugreifen (GET), neue Ressourcen über die URL an den Server zu senden (POST), vorhandene Ressourcen zu aktualisieren (PUT) oder den Befehl für das Löschen einer Ressource über die URL zu geben (DELETE). Für die Kommunikation zwischen Backend und Frontend wird das JSONFormat (JavaScript Object Notation) verwendet. Grund dafür ist der kompakte Aufbau von JSON aus einer für Mensch und Maschine einfach lesbaren Textform, die Implementierung des Clients mittels JavaScript und die Art der Datenbank die Daten als JSON-Dokumente abzuspeichern. Die Webplattform arbeitet damit folgerichtig hauptsächlich mit Schneeprofildaten, die im JSON-Format vorliegen. Beim Import der CAAMLDaten wandelt der Server diese in JSON um und speichert sie in die Datenbank ab. Über die REST-Schnittstelle fragt der Client die Daten ab, die er im JSON-Format erhält, sie verarbeitet und sie im Browser darstellt. Die Webplattform wurde in drei Module aufgeteilt. Das erste Modul beschreibt den Datenkonverter, der die propriäteren Daten in das CAAMLFormat umwandelt. Darauffolgend wird das Backend beschrieben, das den Server und damit verbunden die Datenbank repräsentiert. Desweiteren wird die Integration der CAAML-Daten in das System beschrieben. Letztlich wird auf das Frontend eingegangen, der die Implementierung des Clients nach dem MVC-Muster und die Kommunikationsschnittstelle REST beschreibt. 12 Aleksandar Stojakovic KAPITEL 3. DIE ARCHITEKTUR Abbildung 3.1: Aufbau der Webplattform 3.1 Datenkonverter Die bisher erhobenen Schneeprofildaten des Lawinenwarndienstes sind im propriäteren Format vorhanden. Diese müssen in das CAAML-Format umgewandelt werden um einerseits einen einfachen Informationsaustausch mit internationalen Lawinenwarndiensten zu ermöglichen und andererseits sie in die Webplattform zu integrieren. Prototypisch wurde dafür ein Konverter entwickelt der die Daten des Lawinenwarndienstes von Tirol in das CAAML-Format umwandelt. Unter Zuhilfenahme der XSL-Transformation, kurz XSLT 1 , ist es möglich aus den propriäteren Dateien neue Dateien im CAAML-Format zu erzeugen. Erforderlich dafür ist ein XSLT-Stylesheet, das selbst nach den Regeln des XML-Standards aufgebaut ist. Das Stylesheet definiert die Struktur der zu erzeugenden neuen Datei, also die CAAML-Struktur, und befüllt die Datei mit den Werten aus der propriäteren Datei (Abbildung 3.2). 1 http://www.w3.org/TR/xslt Aleksandar Stojakovic 13 KAPITEL 3. DIE ARCHITEKTUR Abbildung 3.2: XSL-Transformation Der Datenkonverter ist in erster Linie nicht direkt in der Webplattform eingegliedert sondern als seperates Tool entwickelt worden, welches zwei Parameter verwendet: den Pfad zur propriäteren Datei und den Pfad wo die neue Datei gespeichert werden soll. 3.2 Backend Das Backend umfasst den Server und damit die Integration der Datenbank und die Interaktion mit dem Client. Desweiteren bindet das Backend Schneeprofil-Daten die im CAAML-Format vorliegen in das System ein. Abbildung 3.3: Backend - Aufbau 14 Aleksandar Stojakovic KAPITEL 3. DIE ARCHITEKTUR 3.2.1 Die Datenbank Aufgrund des geschachtelten Aufbaus des Schneeprofils (siehe Appendix A.1) und der zu erwartenden großen Datenmenge wird die dokumentenorientierte Datenbank OrientDB verwendet. OrientDB zeigt, im Vergleich zu relationalen Datenbanken, kurze Anfragezeiten bei großen Datenmengen auf. Auch kann es Daten trotz geschachtelten Aufbaus sehr gut verwalten. OrientDB stellt Daten in Form von Dokumenten dar, die eine geschlossene Einheit bildet. Ein Dokument entspricht einem JSON-Objekt - es besitzt Eigenschaften, bestehend aus einem Schlüssel und einem Wert (Key-Value-Format). Auch kann es eine geordnete Liste von Werten, die in einem Array dargestellt werden, oder weitere Objekte, die dem Wurzel-Objekt unterliegen, besitzen. Das Schneeprofil ist als solch eine geschlossene Einheit zu betrachten. Es bildet das Wurzel-Objekt und beinhaltet Eigenschaften (z.B. das Feld Person wird mit dem Namen des Profilaufnehmenden besetzt) und weitere Objekte, wie beispielsweise Schichten, die wiederrum Felder, wie Höhe oder Kornform besitzen. Abbildung 3.4 veranschaulicht grob ein Schneeprofil-Dokument. Abbildung 3.4: Struktur eines Dokuments Aleksandar Stojakovic 15 KAPITEL 3. DIE ARCHITEKTUR Da OrientDB, so wie der Server, auf der Programmiersprache Java basieren, kann diese direkt in einem embedded-Modus in den Server integriert werden. 3.2.2 Integration von CAAML-Dateien OrientDB-Dokumente sind JSON-Daten. Der Server stellt deshalb neben den Funktionen die Datenbankanbindung herzustellen und Ressourcen für den Client zur Verfügung zu stellen, auch einen Konverter bereit, der CAAML-Dateien in das JSON-Format umwandelt und wieder exportiert. Der Konverter ist mithilfe der JSON-Bibliothek von json.org 2 realisiert. Mit diesem Konverter können XML- Dokumente - darunter auch CAAML-Dokumente - in das JSON-Format umgewandelt werden. Dieser analysiert dabei schrittweise jedes Element des XML-Dokuments. Es baut aus einem Element ein JSON-Objekt auf, das als Schlüssel den Elementnamen verwendet und als Wert den Textinhalt des Elementes. Da JSON nicht zwischen Attributen und Elementen unterscheidet werden Attribute seperat als Eigenschaften in das JSON-Objekt eingefügt. Besitzt das Element geschachtelte Elemente, werden diese analog geschachtelt in das JSON-Dokument eingefügt. Abbildung 3.5: Konvertierung - XML in JSON Die Rückkonvertierung geschieht über einen Konverter derselben Bibliothek, die JSON-Daten in XML-Dokumente umwandelt. Dabei werden die Schlüssel als Elemente mit den Werten als Inhalt erstellt. Aufgrund der Nichtunterscheidung zwischen Attributen und Elementen ist eine weitere Konvertierung, in Form einer XSL-Transformation, notwendig um die Daten in Form einer CAAML konformen Datei zu exportieren. 2 16 http://json.org/ Aleksandar Stojakovic KAPITEL 3. DIE ARCHITEKTUR 3.2.3 Kommunikationsschnittstelle für den Client Um auf Anfragen des Clients zu reagieren definiert der Server Klassen, die Methoden der RESTlet-Ressource implementieren. RESTlet ist dabei ein REST-Framework für die Java-Plattform. Jede Klasse repräsentiert somit eine Ressource, die an eine bestimmte URL angehängt wird auf die der Client zugreifen kann. (Listing 3.1) Listing 3.1: Klasse an eine URL anhängen router . attach ( ” / s n o w p r o f i l e /{ i d } ” , SingleSnowProfileResource . class ) ; RESTlet verwendet Annotationen um eine Methode einer CRUD- Operation zuzuordnen. Beispielsweise wird eine Methode die Daten von der Datenbank ladet und dem Client zur Verwendung gibt mit der Annotation @Get() gekennzeichnet (siehe Listing 3.2). Listing 3.2: Methode in SingleSnowProfileResource @Get ( ) // Annotati on , d i e O p e r a t i o n f u e r Methode // d e f i n i e r t public String getJson ( ) { ... // Daten von Datenbank l a d e n return returnSnowProfile ; } Der Server leitet somit die Anfrage des Clients, die über die URL geschehen ist an die verantwortliche Klasse, diese führt die Methode aus, die mit der Operation gekennzeichnet ist, die der Client verwendet. 3.3 Frontend Das Frontend umfasst die Implementierung des Clients. Der Client stellt die Benutzerschnittstelle her über die die Schneeprofildaten bearbeitet werden können. Desweiteren werden diese Daten auch in einem Diagramm zusammengefasst. Es stellt Schnittstellen bereit um das Diagramm als PDF herunterzuladen und/oder sie als XML-Dateien im CAAML-Format zu exportieren bzw. importieren. Dabei verwendet es die REST-Schnittstelle zum Server um auf die Daten zuzugreifen und sie zu manipulieren. Die Implementierung des Programms erfolgt nach dem Schema des MVCMusters, das die Aufgaben innerhalb des Programms aufteilt. Dies erhöht die Wartbarkeit des Programms und Neuerungen können, soweit sie nicht gravierend vom Grundstil abweichen, einfach eingebaut werden. Aleksandar Stojakovic 17 KAPITEL 3. DIE ARCHITEKTUR Dafür wurde die JavaScript-Bibliothek ExtJS verwendet, das die Strukturierung nach dem MVC-Muster erlaubt. 3.3.1 MVC-Muster Das MVC-Muster (engl. Model-View-Controller Pattern) ist ein Muster zur Strukturierung der Software in drei Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (controller). Zusätzlich zu diesen drei Einheiten bietet ExtJS eine weitere Einheit, die aber im Allgemeinen zum Model gezählt wird: die Speicherung (Store). Abbildung 3.6: MVC-Muster • Das Model beschreibt die darzustellenden Daten, die meist reale Objekte sind, und bildet eine Schnittstelle zwischen der View und dem Store. Models können mit anderen Models durch Assoziationen miteinander verlinkt werden. Dadurch kann ein hierarchischer Aufbau umgesetzt werden. • Der Store ist wie erwähnt eine Teileinheit der Model-Einheit. Sie entkapselt einen clientseitigen Cache vom Model und stellt eine Verbindung, via einem Proxy (einer Kommunikationsschnittstelle), mit dem Server her, der Daten beispielsweise aus einer Datenbank anfragt, sofern nicht ein Proxy schon im Model definiert ist. • Die View ist die visuelle Präsentation der Daten. Sie besteht aus mehreren Komponenten, die in sich weitere Komponenten beinhalten können. Diese Strukturierung vereinfacht die Umsetzung der Webplattform. 18 Aleksandar Stojakovic KAPITEL 3. DIE ARCHITEKTUR • Der Controller bildet die Steuerungseinheit. Er reagiert auf jegliche Aktionen des Programms, sei es wenn Daten geladen oder verändert werden oder wenn an der View beispielsweise ein Knopf betätigt wurde - der Controller ist verantwortlich dafür, was bei diesen Aktionen passieren soll. 3.3.2 Benutzerschnittstelle Für die Entwicklung der Benutzerschnittstelle musste die Struktur der zu verwaltetenden Schneeprofildaten analysiert werden. Wie in Kapitel 2 beschrieben besteht das Schneeprofil aus den vier Einheiten: Metadaten, Schichtprofil, Schneetemperaturprofil und Stabilitätstests. Jede dieser Einheiten bildet eine Komponente der Benutzerschnittstelle. Abbildung 3.7: Aufbau des Schneeprofils Folglich besteht die Plattform aus vier View-Einheiten, die eigene Modelle und Stores zur Datenverwaltung benötigen. Es wird dennoch ein eigenes Model benötigt, das das Schneeprofil als eigene Einheit darstellt - das Wurzel-Modell. Die Aufgabe des Controllers besteht nun darin, den Zusammenhang zwischen den vier Grund-Einheiten und der Schneeprofil-Einheit zu finden. Das heißt: wird ein Schneeprofil vom Server angefordert muss der Controller zuerst das Schneeprofil analysieren und die Daten auf die vier Modelle der Grundeinheiten aufteilen. Erst dann werden die Daten den einzelnen Stores zugewiesen und die Views können auf diese zugreifen. Umgekehrt müssen beim Speichern der DaAleksandar Stojakovic 19 KAPITEL 3. DIE ARCHITEKTUR ten in die Persistenz, diese zuerst aus den einzelnen Stores angefordert und zu einer Schneeprofil-Einheit zusammengeführt werden ehe sie an den Server gesendet werden. Aufbau der Benutzerschnittstelle - GUI Die Benutzerschnittstelle soll benutzerfreundlich und intuitiv bedienbar sein. Die Visualisierung wird daher an das propriätere DesktopProgramm des Lawinenwarndienstes von Tirol angelehnt (siehe Appendix A.3). Abbildung 3.8: Aufbau des Schneeprofils Die Plattform wird in drei Abschnitte unterteilt: Ein Formular für die Metadaten, ein Tab-Panel für das Schichtprofil, Schneetemperaturprofil und Stabilitätstests und eine Grafik-Komponente für das SchneeprofilDiagramm, das die Schneeprofildaten grafisch zusammenfasst. Ein Tab-Panel fasst mehrere Komponenten in einen Kartei-Container zusammen. Somit können mehrere Komponenten in die Plattform eingefügt werden für die nur ein Platz im Browser-Fenster verwendet wird. Die drei Komponenten im Tab-Panel sind jeweils in Tabellen umgesetzt, die jede Schicht, Temperatur oder Stabilitätstest auflistet. 3.3.3 Schneeprofil-Diagramm Lawinenwarndienste verwenden zur Analyse von Schneeprofilen hauptsächlich ein Diagramm, das dem Diagramm unter Appendix A.2 entspricht. Die Webplattform soll folglich eine Rendering-Engine bereitstel20 Aleksandar Stojakovic KAPITEL 3. DIE ARCHITEKTUR len, die ein Diagramm aus den Schneeprofildaten erstellt. Sowohl Client als auch Server greifen auf diese Rendering-Engine zu, die als JavaScriptDatei implementiert wurde, um entsprechend das Diagramm auf die Benutzerschnittstelle zu projezieren und es für den PDF-Download vorzubereiten. Der Vorteil einer zentralisierten Rendering-Engine ist die Wartbarkeit. Sollten sich die Anforderungen des Diagramms in Zukunft ändern, so ist diese Änderungen nur an der Rendering-Engine durchzuführen. Die Rendering-Engine ist eine JavaScript-Funktion, die als Parameter ein Schneeprofil im JSON-Format erhält und daraus ein Array zusammensetzt und zurückgibt. Dieses Array enthält Informationen über GrafikObjekte, wie Rechtecke, Texte und Pfade, die in sich weitere Informationen beinhalten, wie die Koordinaten in der sie positioniert werden und ihre Größen. Diese Grafikinformationen werden von den verantwortlichen Komponenten seitens des Clients bzw. des Servers verwendet um auf ihrer Seite das Diagramm zu erstellen. Clientseitig Die Benutzerschnittstelle des Clients verfügt neben den Komponenten für die Ein- und Ausgabemaske auch über eine Komponente, die ein Schneeprofildiagramm aus diesen Daten erstellt, indem sie auf die Rendering-Engine zugreift. ExtJS stellt dafür ein Grafik-Panel zur Verfügung, das eine SVG-Grafik3 erstellt, welches das Schneeprofil-Diagramm repräsentiert. Dieses Grafik-Komponente ist so implementiert, dass sie auf Veränderungen in der Eingabemaske reagiert und das SchneeprofilDiagramm in Echtzeit, also sofort nach der Änderung, aktualisiert. Serverseitig Wird auf der Benutzerschnittstelle der Button für den PDF-Druck betätigt, so kommuniziert der Client dem Server, dass dieser aus den Schneeprofildaten eine Grafik erzeugen und als PDF zur Verfügung stellen soll. Der Server greift dabei auf die Rendering-Engine zurück, benötigt aber eine Java-Implementierung, die JavaScript interpretieren kann. So eine Implementierung bietet Rhino. Rhino hilft serverseitig die JavaScriptFunktionen auszuführen, die die Rendering-Engine bereitstellt. Abschließend müssen die Rendering-Daten mittels eines SVG-Toolkits gezeichnet werden. Ein Java-basiertes SVG-Toolkit ist Batik SVG Toolkit, das die Daten, die die Rendering-Engine zurückgibt, verwendet um ein Schneeprofil-Diagramm als SVG-Grafik zu erstellen. Das Batik SVG 3 http://www.w3.org/Graphics/SVG/ Aleksandar Stojakovic 21 KAPITEL 3. DIE ARCHITEKTUR Toolkit stellt abschließend Module zur Verfügung, die das SVG-Diagramm in PDF konvertiert. Batik bietet auch Module für die Konvertierung in andere Formate, beispielsweise grafische Formate wie JPG oder PNG, die in eigenen Plattformen der Lawinenwarndienste verwendet werden können. 22 Aleksandar Stojakovic Kapitel 4 Verwendete Technologien Dieses Kapitel beschreibt die Technologien, die für die Arbeit verwendet wurden, allgemein und mit Beispielen zur Veranschaulichung. 4.1 XSL-Transformation Für die Datenkonvertierung wurde die Technik der XSL-Transformation (XSLT)12 verwendet. Dabei handelt es sich um ein Verfahren, das aus dem Inhalt einer Datei im XML-Format mit Hilfe eines XSLT-Stylesheets eine neue Datei, in einem beliebigen Format, erstellt. Abbildung 4.1: XSL-Transformation Der XSLT-Prozessor liest die propriätere Datei ein und traversiert die 1 2 http://www.w3.org/TR/xslt http://www.w3.org/Style/XSL/ 23 KAPITEL 4. VERWENDETE TECHNOLOGIEN darin enthaltene Baumstruktur des XML-Formats. Mittels XPath 3 kann schließlich auf einen beliebigen Pfad der in der Eingabe-Datei enthaltenen Information zugegriffen werden. Der in diesem Projekt umgesetzte Konverter wandelt mit dieser Technik Schneeprofildateien, welche vom Schneeprofilprogramm der Firma Sommer Mess- & Systemtechnik in einem XML Format verwaltet werden in CAAML konforme XML-Dateien. Listing 4.1 zeigt zur Veranschaulichung ein Teil des Inhaltes des Eingabeformats des implementierten Konverters Listing 4.1: Code-Ausschnitt propriätere Datei <SPP−P r o f i l> <Kopf> <Beobachter>Aleksandar Stojakovic</ Beobachter> <Kopf> </SPP−P r o f i l> Listing 4.2 zeigt wie der Zugriff auf diesen Inhalt geschieht, nämlich durch die Eingabe des Element-Pfades. Listing 4.2: Code-Ausschnitt des XSLT-Stylesheets <S n o w P r o f i l e> <metaDataProperty> <MetaData> <s r c R e f> <O p e r a t i o n g m l : i d=”SLF”> <c o n t a c t P e r s o n> <Person> <name> <x s l : v a l u e −o f s e l e c t=”SPP−P r o f i l / Kopf / Beobachter ” /> </name> </ Person> </ c o n t a c t P e r s o n> </ O p e r a t i o n> </ s r c R e f> </ MetaData> </ metaDataProperty> </ S n o w P r o f i l e> Die daraus resultierende Datei im CAAML-Format zeigt Listing 4.3. 3 24 http://www.w3.org/TR/xpath/ Aleksandar Stojakovic KAPITEL 4. VERWENDETE TECHNOLOGIEN Listing 4.3: Das Ergebnis der Transformation <S n o w P r o f i l e> <metaDataProperty> <MetaData> <s r c R e f> <O p e r a t i o n g m l : i d=”SLF”> <c o n t a c t P e r s o n> <Person> <name>Aleksandar Stojakovic</name> </ Person> </ c o n t a c t P e r s o n> </ O p e r a t i o n> </ s r c R e f> </ MetaData> </ metaDataProperty> </ S n o w P r o f i l e> 4.2 JSON JSON (JavaScript Object Notation) ist ein immer populärer werdendes und kompaktes Datenformat für semistrukturierte Daten[Bun97], das entwickelt wurde um einen einfachen Datenaustausch zwischen Anwendungen zu gewährleisten. Die Syntax entspricht der Skriptsprache JavasScript. JSON zeigt sich dadurch aus, das es durch seine KeyValue-Struktur von Mensch und Maschine einfach les- und beschreibbar ist. Außerdem geht JSON, im Vergleich zu XML, sparsamer mit Speicherplatz und CPU-Leistung um. Dies ist aus dem Aufbau von JSON-Objekten zurückzuführen, das sich aus zwei Grundtypen zusammensetzt: Objekte und Arrays. Diese Struktur führt dazu, dass sie eine einfache und klare Syntax besitzt. Der Zugriff auf Inhalte ist eindeutig. Ein Beispiel für eine JSON-Datei zeigt Listing 4.4. Um den Vergleich mit XML zu erkennen wurde das Beispiel von Listing 4.1 verwendet bzw. mit Schichten erweitert um beide Grundtypen (Objekte und Arrays) zu veranschaulichen: Listing 4.4: JSON-Beispiel { ”SPP−P r o f i l ” : { ” Kopf : { ” Beobachter ” : }, ” Schichten ” : { [ { ” Schicht1 ” : { ” Schicht2 ” : { ” Schicht3 ” : ]} Aleksandar Stojakovic ” Aleksandar Stojakovic ” ” Schicht 1 ” } , ” Schicht 2 ” } , ” Schicht 3 ” } 25 KAPITEL 4. VERWENDETE TECHNOLOGIEN } } 4.3 REST Representational State Transfer oder REST ist ein Architekturparadigma für Client-Server Applikationen, welche es dem Client ermöglicht über ein klar definiertes Set an Operationen den Zustand eindeutig addressierbarer Resourcen abzufragen, neu zu erstellen, zu manipulieren und zu löschen. Ein Beispiel für ein REST basiertes System ist HTTP und das darauf basierende World Wide Web. 4.3.1 Prinzipien Es gibt fünf Prinzipien die einen REST-Dienst ausmachen:[Fie00] • Adressierbarkeit: Jeder REST-konformer Server stellt ein Set von eindeutig adressierten Ressourcen bereit. Diese werden über eine eindeutige URL angesprochen. • Unterschiedliche Repräsentationen: Jede Ressource die über eine Adresse angefordert wird, kann auf verschiedene Weisen dargestellt werden. Dem Client liegt es frei die Art der Repräsentation, den Typ, auszuwählen. Solche Typen sind beispielsweise HTML, XML oder JSON - die genaue Repräsentation wird zwischen Client und Server ausgehandelt. • Zustandslosigkeit: Jede Botschaft die über REST geschieht enthält alle notwendigen Informationen einer Nachricht. REST nimmt hierbei die Verantwortung der clientseitigen und serverseitigen Anwendungen die Informationen selbst zu verwalten. Dadurch kann ein Webservice als zustandslos bezeichnet werden. Dies hat den Vorteil, dass jede Nachrichten-Transaktion unabhängig voneinander zu behandeln ist. • Operationen: Dienste die REST verwenden müssen ein einheitliches Set von Operationen zur Verfügung stellen anhand derer Ressourcen manipuliert werden können. HTTP zum Beispiel definiert folgende Operationen: GET, POST, PUT und DELETE. In Verbindung mit der URL wird auf eine bestimmte Ressource eine Methode ausgeführt, die nach bestimmten Regeln ablaufen sollen. GET beispielsweise muss “sicher“ sein. D.h., dass diese Methode nur Informationen holt und keine sonstigen Aktionen ausführt. Während die restlichen Methoden beim mehrfachen ausführen der 26 Aleksandar Stojakovic KAPITEL 4. VERWENDETE TECHNOLOGIEN gleichen Anforderung wie ein einzelner Aufruf verhält - dies wird als indempotent bezeichnet. • Verwendung von Hypermedia: Bei einer Anfrage eines Clients werden nicht nur die benötigten Daten als Antwort gesendet, sondern auch Adressen auf Ressourcen, welche verlinkt sind, damit die Anwendung weiß welchen Schritt sie als nächstes durchzuführen hat. Zum Bsp. eine Liste von Benutzern, die pro Benutzer eine Adresse zur Benutzerinformation bereitstellt. 4.3.2 Beispiel Listing 4.5: REST: Anfrage einer clientseitigen Anwendung GET / customers /123 HTTP : 1 . 1 Host : example . com Accept : application / json Listing 4.5 veranschaulicht eine Anfrage über eine REST-basierte HTTPSchnittstelle, welche die Kundendaten eines spezifischen Kunden im JSON-Format erhalten möchte. Als Operation wurde GET gewählt, d.h. die Anwendung will Daten von einem Server anfragen. Dies geschieht über eine URL, /customers/123 des Hosts example.com. Der Repräsentationstyp ist JSON. Kurz gesagt: der Client fordert vom Server Daten eines Customers mit der ID 123 an und will diese in Form von einem JSON-Objekt erhalten. 4.4 ExtJS ExtJS ist eine JavaScript-Bibliothek zur Entwicklung von Desktopähnlichen Anwendungen im Web. Es vermittelt dem Benutzer das Gefühl nicht auf einer Webseite zu sein, sondern mit einem Programm zu arbeiten, was diesem intuitiver erscheint und die Benutzerfreundlichkeit des Programms erhöht. ExtJS erweitert JavaScript im Sinne der Klassenbasiertheit. Es stellt über 300 Klassen zur Verfügung, welche Funktionen für das Erstellen von geeigneten Benutzerschnittstellen, das clientseitige Cachen von Daten und die Manipulation derer bereitstellt. Dies ist durch die Vererbbarkeit von JavaScript möglich, was ExtJS zu einer clientseitigen objektorientierten Scriptsprache macht. ExtJS bietet die Möglichkeit Clients nach dem MVC-Muster zu entwickeln. Es ist möglich Controller, Modelle und Views zu definieren, wobei Modelle die Struktur der Daten festlegen, Views diese mittels einer Aleksandar Stojakovic 27 KAPITEL 4. VERWENDETE TECHNOLOGIEN Vielzahl von GUI-Komponenten darstellen und Controller auf Ereignisse der Benutzerschnittstelle reagieren. Die Bibliothek beinhaltet dabei unter Anderem folgende GUI-Elemente: Formular-Elemente • Text-Felder (einzeilig und mehrzeilig) • Datumsfelder mit Eingabehilfe in Form eines aufklappbaren Kalenders • Numerische Felder mit Schaltflächen für Inkrement und Dekrement • Listenfelder und Auswahlboxen (Combobox) • Optionsfeld (Radiobutton) und Kontrollkästchen (Checkbox) • HTML-Eingabebereiche Jedes Formularelement kann eigene Validierungen definieren, welche Eingaben erlaubt sind, beispielsweise keine leeren Eingaben oder nur Dezimalwerte sind erlaubt. Desweiteren stehen verschiedene vorgefertigte Elemente, auch Widgets genannt, zur Verfügung: Widgets • Listendarstellung (Nur-Lese- oder mit Editierfunktion, sortierbar, Spaltenreihenfolge änderbar) • Baumstruktur • Registerkarten-Darstellung • Menüleisten • Kontextmenüs im Aussehen des Desktop-Betriebssystems • Dynamische Platzaufteilung der Steuerelemente • Bildlaufleisten • Grafiken auf SVG-Basis Die Kommunikationsschnittstellen zum Server können über verschiedene Typen, beispielsweise Ajax oder Rest, geschehen. Dabei werden auch Datenformate, XML oder JSON, und Handler, die Aktionen bei bestimmten Operationen, zum Bsp. lesen oder schreiben, ausführen, definiert. 28 Aleksandar Stojakovic KAPITEL 4. VERWENDETE TECHNOLOGIEN 4.5 Rhino Rhino ist eine Open-Source Implementierung von JavaScript, die in Java geschrieben ist. Sie bietet die Möglichkeit JavaScript-Code über eine Java-Applikation zu kompilieren und zu interpretieren. Rhino wandelt dabei JavaScript Skripts in Java-Klassen um und verwendet ihre Funktionen als Methoden, denen Parameter übergeben werden können und dessen Return-Werte in der restlichen Java-Applikation verwendet und bearbeitet werden können. 4.6 Batik Batik ist ein Java-basiertes Toolkit zur Erstellung von SVG-Grafiken4 . Batik bietet ein Set von Modulen die entweder gemeinsam oder individuell für SVG-Lösungen verwendet werden können. Ein Beispiel für Batik-Module sind der SVG-DOM und der SVG-Creator, die für die serverseitige Erstellung des Schneeprofil-Diagramms verwendet wird. Das SVG-DOM erstellt SVG-Elemente, die nach dem XML-Format aufgebaut sind und der SVG-Creator erzeugt daraus eine eigenständige SVGGrafik. Listing 4.6 zeigt die Erstellung eines Rectangle-Elements mittels SVGDom. Dem Rechteck-Element werden x-, y-Koordinaten, Höhe, Breite und die Füllfarbe definiert. Damit wird ein rotes Rechteck, das 10 Pixel vom linken Rad und 20 Pixel vom oberen Rand des SVG-Dokuments erstellt. Listing 4.6: Beispiel-Implementierung eines Rechtecks über SVG-DOM DOMImplementation impl = SVGDOMImplementation . getDOMImplementation ( ) ; Document doc = impl . createDocument ( svgNS , ” sv g ” , null ) ; Element rectangle = doc . createElementNS ( svgNS , ” r e c t ” ) ; rectangle . setAttributeNS ( null , ”x” , ” 10 ” ) ; rectangle . setAttributeNS ( null , ”y” , ” 20 ” ) ; rectangle . setAttributeNS ( null , ” width ” , ” 100 ” ) ; rectangle . setAttributeNS ( null , ” h e i g h t ” , ” 50 ” ) ; rectangle . setAttributeNS ( null , ” f i l l ” , ” r e d ” ) ; 4 http://www.w3.org/TR/SVG11/ Aleksandar Stojakovic 29 KAPITEL 4. VERWENDETE TECHNOLOGIEN 4.7 Dokumentenorientierte Datenbanken & OrientDB Moderne Webapplikationen müssen aufgrund ihrer starken Verbreitung und der Möglichkeit enorm große Benutzergruppen anzusprechen mit hohen Anforderungen an Performance und Skalierbarkeit umgehen. Durch das Entstehen von Web 2.0 und damit verbunden die Erhöhung der Popularität von Social Media stieg die Anzahl von Benutzern eines Webdienstes von 10 auf mehrere Millionen Benutzer, die jeweils Informationen speichern wollen, deren Struktur nicht flach sondern hierarchisch ist. Um die Daten skalierbar zu verwalten und schnellen Zugriff darauf zu gewährleisten benötigt es eine verteilte Datenbank. So eine Shared-Nothing-Architektur bietet dabei nicht nur einen Knoten für die Verbindung zur Datenbank sondern mehrere Knoten die über eigene Prozessoren verfügen. Zusammen ergeben sie eine zentrale Datenbank. Im Vergleich zu Shared-Disk- und Shared-Memory-Architekturen gehen Shared-Nothing-Architekturen besser mit der Skalierbarkeit über verteilte Maschinen und der Entfernung zwischen den Maschinen um. Die Konsistenz der Daten ist dabei aber nicht gegeben. Ein daraus resultierendes Datenbanksystem ist das dokumentenorientierte Datenbanksystem (DODBS), das zu den zentralen NoSQL- Technologien zählt. Anders als bei relationalen Datenbanksystemen arbeiten DODBS nicht mit Tabellen sondern mit Dokumenten. Die Daten in einem Dokument werden in Form von Key/Value-Paaren gespeichert. Das heißt es besteht aus Schlüsselfeldern, denen bestimmte Werte zugewiesen werden. Das Wort Wert bezeichnet hier nicht ein atomares Datum sondern eine beliebige Information, die auch ein Array sein kann oder ein weiteres geschachteltes Datum. An dieser Stelle erkennt man eine Analogie zum vorher beschriebenen JSON-Format. In DODBS existieren daher keine Relationen, da ein Dokument schon alle wichtigen Informationen atomar oder geschachtelt gespeichert hat - das Dokument ist eine geschlossene Einheit. DODBS stellen deswegen auch keine mächtige Abfragesprache zur Verfügung wie SQL, da diese nicht mehr erforderlich sind. Die in dieser Arbeit verwendete Datenbank OrientDB erfüllt die Bedingungen einer verteilten, skalierbaren und flexiblen dokumentenorientierten Datenbank. 30 Aleksandar Stojakovic KAPITEL 4. VERWENDETE TECHNOLOGIEN Vergleich mit relationalen Datenbanksystemen Ein Grundgedanke hinter DODBS ist zusammengehörige Daten auch gemeinsam zu speichern. Ein relationales Datenbanksystem (RDBS) speichert Daten in verschiedenen Tabellen. Informationen die entfernt zusammengehören müssen darum aufwendig mit Techniken der Abfragesprache SQL verbunden werden oder weitere Tabellen erstellen, die die Beziehung zweier Tabellen beschreibt. Diese drei Tabellen müssen wiederrum mit SQL verbunden werden um die gewünschte Repräsentation der Daten zu erhalten. Diese Art von Datenabfragen kosten bei großen Datenmengen und einer Vielzahl von Nutzern sehr viel Speicher und Zeit. Das CAP-Theorem besagt, dass eine Unvereinbarkeit der drei wichtigsten Ziele, Konsistenz, Verfügbarkeit im Sinne schneller Antwortzeiten und Ausfalltoleranz von verteilten DBS vorliegt [JCA10]. Laut diesem Theorem können nur zwei Ziele erreicht werden - auf eins muss bei der Entwicklung verzichtet werden. Während RDBS sich auf die Konsistenz konzentriert, und dabei die Verfügbarkeit vernachlässigt, stellen DODBS die Antwortzeiten in den Vordergrund und nehmen vorübergehende Phasen von Inkonsistenz auf. Spätestens seit dem Aufschwung von Web 2.0, dem Voranschreiten von Social Media, wie Facebook und Twitter, können sich NoSQL-System mit den RDBS messen. Aleksandar Stojakovic 31 Kapitel 5 Ausblick Die Webplattform zur Verwaltung von Schneeprofilen ist initial für den Lawinenwarndienst von Tirol entwickelt worden. Aktuell befindet sich die Plattform im Testbetrieb und soll nach einem intensiven Bugfix und einer Quality Assurance (QA) -Phase mit der Wintersaison 2012 in den Regelbetrieb, zunächst für eine eingeschränkte Benutzergruppe im LWD von Tirol, übergeführt werden. Darauffolgend wird die Internationalisierung der Arbeit vorangetrieben. Die Webplattform wird auf Mehrsprachigkeit erweitert und es werden weitere Optimierung durchgeführt um ein einwandfreies Arbeiten über Ländergrenzen hinweg zu gewährleisten. Die Webplattform soll weltweit zu einer Basisplattform zur Verwaltung von Schneeprofilen werden. Auf dieser Grundlage werden weitere Punkte wie automatisches Analysieren der Schneeprofile für die Einschätzung der Lawinensituation, eine Erweiterung der Datenstruktur in Kombination mit Wetterstationsdaten und die Entwicklung eines Mobile Clients zur Eingabe mittels HTML5 vor Ort und automatischer GPS-Erkennung entwickelt. Auch wird der Einbezug von weiteren Lawinenwarndiensten weltweit angestrebt. 33 Kapitel 6 Zusammenfassung In dieser Arbeit wurde die Entwicklung einer Webplattform zur Verwaltung von Schneeprofildaten erklärt. Neben der Verwaltung von Schneeprofilen liegt der Zweck der Webplattform darin die Profilaufnahme zu zentralisieren. Es wird zunächst der Aufbau eines Schneeprofils beschrieben, die für die Entwicklung der Plattform wichtig ist um geeignete Komponenten für das Design auszusuchen. Darauffolgend wird die Architektur der Plattform beschrieben. Es wird auf das Frontend, seine Realisierung nach dem MVC-Muster, und das Backend, das die Datenbank bereitstellt, eingegangen. Dabei wird die Kommunikation zwischen Backend und Frontend beschrieben und die Art und das Format des Datenaustauschs erklärt. Desweiteren wird ein Datenkonverter beschrieben, der die vorhandenen Daten der Lawinenwarndienste, die im propriäteren Format vorliegen, in das neu entwickelte CAAML-Format umwandelt. Es wird die verwendete Technologie im Detail erklärt und schlussendlich ein Ausblick gewährt wie der Einsatz der Webplattform für die Zukunft aussieht. 35 Appendix A.1 Schneeprofildaten im JSON-Format {” SnowProfile ” : { ” l o c R e f ” : { ” ObsPoint” : { ” d e s c r i p t i o n ” : ”” , ”name” : ” ” , ” obsPointSubType ” : ” ” , ” pointLocation ” : {” gml Point ” : { ” gml id ” : ”” , ” gml pos ” : ” ” , ” srsDimension ” : ”” , ” srsName ” : ” ” }} , ” validAspect ” : {” AspectPosition ” : {” p o s i t i o n ” : ”” }} , ” v a l i d E l e v a t i o n ” : {” E l e v a t i o n P o s i t i o n ” : { ” p o s i t i o n ” : ”” , ”uom” : ” ” }} , ” v alid S lop eA n gle” : {” S lop eA n glePosit ion” : { ” p o s i t i o n ” : ”” , ”uom” : ” ” }} }} , ” metaDataProperty ” : { ” MetaData ” : { ” dateTimeReport ” : ” ” , ” srcR ef ” : {” Operation” : { ” c o n t a c t P e r s o n ” : { ” Person ” : { ”name” : ” ” }} , ”name” : {} }} }} , ” on lin e ” : ”” , ” s n o w P r o f i l e R e s u l t s O f ” : { ” SnowProfil eM e a sur em en ts ” : { ” airTempPres ” : { ” content ” : ”” , ”uom” : ”degC” }, ”comment” : ” ” , ” densityProfile ” : { 37 APPENDIX A.1. SCHNEEPROFILDATEN IM JSON-FORMAT ” uomDensity ” : ”kgm−3” , ”uomDepthTop ” : ”cm” , ” uomThickness ” : ”cm” }, ” d i r ” : ” bottom up” , ”hS” : { ” Components” : { ” snowHeight ” : { ” content ” : ”” , ”uom” : ”cm” }}} , ” hardnessProfile ” : { ”uomDepthTop ” : ”cm” , ” uomDropHeight ” : ”cm” , ” uomHardness” : ”N” , ” uomThickness ” : ”cm” , ”uomWeightHammer” : ” kg ” , ”uomWeightTube ” : ” kg ” }, ” precipTI ” : ”” , ” profileDepth ” : { ” content ” : ”” , ”uom” : ”cm” }, ” skyCond” : ” ” , ” stbTests” : { ”ComprTest ” : [ ] , ” ExtColumnTest ” : [ ] , ” RBlockTest ” : [ ] }, ” s t r a t P r o f i l e ” : { ” Lay er ” : [ ] } , ” tempProfile” : { ”Obs” : [ ] , ”uomDepth” : ”cm” , ”uomTemp” : ”degC” }, ” windDir ” : { ” A s p e c t P o s i t i o n ” : { ” p o s i t i o n ” : ” ” } } , ” windSpd” : { ” content ” : ”” , ”uom” : ”ms−1” } }} , ” v a l i d T i m e ” : { ” T i m e I n s t a n t” : { ” t i m e P o s i t i o n ” : ” ” } } , ” xmlns app ” : ” h t t p : / /www. s n o w p r o f i l e a p p l i c a t i o n . com” , ” x mlns caaml ” : ” h t t p : / /www. caaml . o r g / v5 . 0 / S n o w p r o f i l e /IACS” , ” xmlns gml ” : ” h t t p : / /www. o p e n g i s . n e t / gml” , ” x m l n s x s i ” : ” h t t p : / /www. w3 . o r g /2001/XMLSchema−i n s t a n c e ” , ” x s i s c h e m a L o c a t i o n ” : ” h t t p : / / caaml . o r g / Schemas/V5 . 0 / P r o f i l e s / SnowProfileIACS h t t p : / / caaml . a v i s u a l a n c h e . ca / Schemas/V5 . 0 / P r o f i l e s / SnowprofileIACS / CAAMLv5 SnowProfileIACS . xsd ” }} 38 Aleksandar Stojakovic APPENDIX A.2. SCHNEEPROFIL-GRAFIK A.2 Schneeprofil-Grafik Die folgende Grafik fasst alle Schneeprofildaten visuell zusammen. Am Anfang werden die Metadaten zusammengefasst, die gefüllten Rechtecke zeigen die jeweiligen Schichten des Schichtprofils, der rote Pfad zeigt den Verlauf der Schneetemperatur in Abhängigkeit von der Schneehöhe bzw. -tiefe. Zu jeder Schicht werden der Wassergehalt (Feuchte), die Kornformen, die Korngröße und Härte angezeigt, die manuell im Schichtprofil eingegeben wurden. Der Punkt Niete wird aufgrund der SchichtprofilEingabe automatisch generiert - die Anzahl der Sterne, also *, ergibt sich aus der Anzahl der zutreffenden Nietentest-Kriterien, die in der Einleitung beschrieben wurden. Zum Schluss folgen die Stabilitätstests. Aleksandar Stojakovic 39 APPENDIX A.2. SCHNEEPROFIL-GRAFIK 40 Aleksandar Stojakovic APPENDIX A.3. BENUTZERHANDBUCH A.3 Benutzerhandbuch Die Webplattform wird nach der Testphase auf einem vom Lawinenwarndienst von Tirol bereitgestellten Server installiert. Bei der Benutzung der Webplattform soll dieses Benutzerhandbuch helfen, das alle Seiten und Funktionen erklärt. Login Jeder Benutzer erhält einen Benutzernamen und ein Passwort mit der er in die Plattform einsteigen kann. Es wird zwischen Administrator, der Vollzugriff auf die Plattform hat, und gewöhnlichen Benutzer, der Einschränkungen unterliegt, unterschieden. Der Administrator ist in der Anfangsphase für die Überprüfung der Schneeprofildaten zuständig und kann diese Sperren lassen um gewöhnlichen Benutzern den Zugang darauf zu verwehren. Nach dem erfolgreichen Login wird der Benutzer auf die Übersichtsseite verlinkt. Jede Seite nach dem Login verfügt über einen Logout-Button, der den Benutzer vom System abmeldet. Schneeprofil - Übersicht Die Übersichtsseite listet alle Schneeprofile auf mit der Möglichkeit ein neues Schneeprofil zu erstellen und vorhandene Schneeprofile zu bearbeiten oder zu löschen. Das Löschen eines Schneeprofils bewirkt nur das Löschen aus der Datenbank - es wird dabei auf keine andere Seite hinverlinkt, während beim neu Erstellen bzw. Bearbeiten eines Schneeprofils auf die Eingabemaske und damit der wichtigsten Maske der Webplattform verlinkt wird. Aleksandar Stojakovic 41 APPENDIX A.3. BENUTZERHANDBUCH Schneeprofil - Eingabemaske Diese Eingabemaske besteht aus den in der Architektur beschriebenen Komponenten: Metadaten, Schichtprofil, Schneetemperaturprofil, Stabilitätstests und dem Schneeprofil-Diagramm. Im Folgenden sind die Komponenten: Metadaten, Schichtprofil, Schneetemperaturprofil und Stabilitätstests genauer aufgezeigt. Die Bedeutung der Felder und ihr Einfluss auf das Schneeprofil wird im Kapitel 2 erklärt. Zuerst werden die Metadaten mittels einem Speichern-Button gespeichert, damit das Schneeprofil eine ID erhält. Erst dann ist die Eingabe der anderen Komponenten möglich. Desweiteren stehen Buttons für den PDF-Druck der Schneeprofil-Diagramm, dem Import von CAAML-Daten in das System und dem Export der Schneeprofildaten als CAAML-Dateien. Abschließend ist ein Zurück Button vorhanden um auf die Übersichtsseite zu gelangen. 42 Aleksandar Stojakovic APPENDIX A.3. BENUTZERHANDBUCH Metadaten Die Komponenten für Schichtprofil, Schneetemperaturprofil und die Stabilitätstests sind jeweils Tabellen, die die jeweiligen Daten aufzeigen. Jede Zeile ist durch Doppelklick editierbar, während es für jede Tabelle jeweils zwei Buttons zur Verfügung stehen - eine für das Einfügen einer neuen Zeile und eine für das Löschen einer Zeile zuständig ist. Schichtprofil Aleksandar Stojakovic 43 APPENDIX A.3. BENUTZERHANDBUCH Schneetemperaturprofil Stabilitätstests Das Schneeprofil-Diagramm ist im Appendix A.2 ersichtlich. 44 Aleksandar Stojakovic Literaturverzeichnis [Bun97] P. Buneman: Semistructured Data, 1997, pages 117–121. [Fie00] R. T. Fielding: Architectural Styles and the Design of Network-based Software Architectures, Ph.D. thesis, University of California, Irvine, 2000. [Fie09] The International Classification for Seasonal Snow on the Ground (Draft), International Hydrological Programme (IHP) of the United Nations Educational, Scientific and Cultural Organization (UNESCO), 75732 Paris Cedex 15, France, 2009. [fSuLS] W. I. für Schnee-und Lawinenforschung SLF: Schneeund Lawineninfo - Erläuterungen, http://www.slf.ch/ lawineninfo/schneeinfo/sds/erlaeuterungen_DE, [Online; accessed 18-September-2012]. [fWSuLW] E. F. für Wald Schnee und Landschaft WSL: Schweizer Interpretation Schneedeckenuntersuchungen, http://www.wsl.ch/info/mitarbeitende/ schweizj/publications/Schweizer_Interpretation_ Schneedeckenuntersuchungen.pdf, [Online; accessed 18-September-2012]. [JCA10] N. S. J. Chris Anderson, Jan Lehnardt: The Cap Theorem, O’REILLY, 2010, pages 12–13. 45