2024-09-13 13:21:22 +02:00
|
|
|
% !TeX root = ../../thesis.tex
|
2024-01-27 13:37:35 +01:00
|
|
|
|
|
|
|
\chapter{Zusammenfassung und Ausblick}
|
|
|
|
\label{ch:summary_and_outlook}
|
2024-09-13 13:21:22 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
\mytodos{die 2 Untersektionen beibehalten?}
|
2024-09-22 00:51:24 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
\section{Zusammenfassung}
|
|
|
|
\label{sec:Summary_and_outlook:results}
|
|
|
|
% In der Gegenwart schreiben, außer bei verweisen auf die Arbeit, dann in der Vergangenheit!
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
Die Untersuchungen am Beispiel des Wedekind"=Projektes zeigen, dass mehrere Optimierungsmöglichkeiten in den
|
2024-09-26 23:43:15 +02:00
|
|
|
Briefeditionen existieren. Für die Untersuchung wurde sich auf die Dokumentenliste beschränkt und anhand dieser
|
2024-09-24 23:56:07 +02:00
|
|
|
die Optimierung implementiert, untersucht und jeweils mit der Ausgangsmessung vergleichen. Für die Messung wurden
|
2024-09-27 20:58:59 +02:00
|
|
|
Skripte erstellt, welche auf dem gleichen Computer wie der Webserver und der Datenbankserver laufen, damit diese auch
|
2024-09-24 23:56:07 +02:00
|
|
|
vergleichbar bleiben und externe Einflussfaktoren minimiert werden.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-26 23:43:15 +02:00
|
|
|
Durch die Ausgangsmessungen war erkennbar, dass der größte Teil der Verarbeitungszeit im Bereitstellen der Entitäten
|
2024-09-27 20:58:59 +02:00
|
|
|
liegt. Die Messung der Abfragen auf der Datenbank wiederum konnte die hohe Verarbeitungszeit nicht bestätigen,
|
|
|
|
daher lag hier die Vermutung nahe, dass der Großteil der Zeit im ORM"=Mapper verloren geht.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-26 23:43:15 +02:00
|
|
|
Die Methode der Nutzerumfrage wurde nicht weiterverfolgt, da diese auf Grund zu wenigen Bedienern nicht zielführend war.
|
2024-09-27 20:58:59 +02:00
|
|
|
Bei der Untersuchung der Datenbank wurde festgestellt, dass die Struktur aktuell für die Anwendung optimal ist und
|
2024-09-24 23:56:07 +02:00
|
|
|
daher eine Restrukturierung keine Vorteile entstehen lässt. Die statische Webseite und die komplett Client basierte
|
2024-09-27 20:58:59 +02:00
|
|
|
Webseite wurden auf Grund von technischen Einschränkungen nicht weiterverfolgt.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
Bei den Caches sind der Query"=Cache und der EJB"=Cache nicht für die Optimierung verwendbar. Der Query"=Cache wird
|
|
|
|
von OpenJPA nur verwendet, wenn die Abfragen keine Parameter besitzt, welche in der Dokumentliste verwendet werden
|
|
|
|
mussten. Im EJB"=Cache werden nicht die Objekt, sondern die Provider gespeichert, wodurch hier keine Auswirkung auf die
|
|
|
|
Performance festgestellt werden konnte.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
Anders sieht es bei dem OpenJPA"=Cache aus, dieser hat direkten Einfluss auf die Performance der Ermittlung der Daten
|
|
|
|
und Bereitstellung der dazugehörigen Java"=Objekte. Anhand der vorgegeben Cache"=Größe kann das Potential der
|
|
|
|
Optimierung eingestellt werden. Dies bedeutet, soweit der Cache groß genug ist um alle notwendigen Objekte zu
|
2024-09-27 20:58:59 +02:00
|
|
|
speichern, sind die Verbesserungen gut sichtbar. Ab dem Zeitpunkt ab dem Objekte aus dem Cache entfernt werden müssen,
|
2024-09-24 23:56:07 +02:00
|
|
|
wird die Optimierung immer geringer.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
Ein sehr ähnliches Verhalten konnte mit dem Ehcache festgestellt werden, nur dass bei diesem die Limitierungen höher
|
|
|
|
angesetzt sind und die Verwaltung des Caches im Gesamtsystem effizienter aufgebaut ist, als bei OpenJPA.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-24 23:56:07 +02:00
|
|
|
In beiden Fällen der Optimierung über die Nutzung eines Caches, konnte durch die Messungen in der Software und der
|
|
|
|
Abfragen an der Datenbank nachgewiesen werden, dass nicht das Ermitteln der Daten die größte Zeit einnimmt, sondern
|
|
|
|
das Erstellen und Befüllen der Objekte in Java.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-27 20:58:59 +02:00
|
|
|
Bei dem Vergleich der unterschiedlichen Abfragemethoden Criteria API und JPQL konnte kein Unterschied in der
|
2024-09-24 23:56:07 +02:00
|
|
|
Performance und Abarbeitung festgestellt werden. Bei beiden Methoden konnte nachgewiesen werden, dass die syntaktisch
|
|
|
|
gleichen Abfragen an die Datenbank gestellt wurden. Bei den Abfragen zur Dokumentenliste konnten in beiden Fällen
|
|
|
|
durch die Umstellung der Ermittlung der unterlagerten Daten durch Hints eine Optimierung erreicht werden. Die Umstellung
|
2024-09-27 20:58:59 +02:00
|
|
|
bezweckt das die unterlagerten Daten nicht einzeln für jede Zeile ermittelt wurden, sondern alle Daten auf einmal
|
2024-09-24 23:56:07 +02:00
|
|
|
geladen werden und die Zuordnung der Datensätze im OpenJPA"=Framework durchgeführt wird.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-26 23:43:15 +02:00
|
|
|
Mit der Übernahme der \textit{Materialized View} aus dem Wedekind"=Projekt konnte erstmalig ein gute Optimierung
|
2024-09-24 23:56:07 +02:00
|
|
|
beobachtet werden. Dies ist auf die einfachere Abfrage, die Reduzierung der Abfrage an den Datenbankserver und das
|
2024-09-27 20:58:59 +02:00
|
|
|
die Objekte im eigenen Code erstellt werden und nicht durch das OpenJPA"=Framework. Hierbei konnte noch nachgewiesen
|
2024-09-26 23:43:15 +02:00
|
|
|
werden, dass das Parsen der Json"=Daten, die die unterlagerten Objekte enthalten, den größten Teil der Zeit benötigen.
|
|
|
|
Auf Grund dessen wurde das Parsen der Json"=Daten auf den Client verschoben, was zu einem noch besseren Ergebnis führte.
|
2024-09-22 19:32:07 +02:00
|
|
|
|
2024-09-26 23:43:15 +02:00
|
|
|
Für die Optimierung der Abfragen wurde die Hauptabfrage betrachtet. Bei dieser konnte anhand der visuellen Darstellung
|
2024-09-24 23:56:07 +02:00
|
|
|
das Problem gut identifiziert werden. Durch die Verwendung einer \textit{Common Table Expression} wurde die Anzahl
|
2024-09-27 20:58:59 +02:00
|
|
|
der Datensätze direkt am Anfang auf die angefragte Menge reduziert, wodurch die Anzahl der zu betrachteten Datensätze
|
|
|
|
für die weiteren Verlinkungen enorm reduziert wurde. Somit konnte der Datenbankserver bei diesen Verlinkung auf Indexe
|
2024-09-24 23:56:07 +02:00
|
|
|
zugreifen und damit die Abfragen zusätzlich beschleunigen.
|
|
|
|
|
|
|
|
Die Untersuchungen zeigen, dass mehrere Möglichkeiten zur Optimierung existierten, um die Zugriffe auf die
|
2024-09-27 20:58:59 +02:00
|
|
|
Briefeditionen zu beschleunigen und das das größte Optimierungspotential in dem ORM"=Mapper liegt. Welche der
|
|
|
|
Optimierungen verwendet werden, liegt an der Komplexität der Abfrage und der bereitgestellten Ressourcen
|
2024-09-24 23:56:07 +02:00
|
|
|
des Servers.
|
|
|
|
|
|
|
|
\section{Ausblick}
|
|
|
|
\label{sec:summary_and_outlook:outlook}
|
|
|
|
|
|
|
|
Die Untersuchungen zeigen, dass die Schichten über OpenJPA weitestgehend optimal umgesetzt sind, beziehungsweise wenig
|
2024-09-27 20:58:59 +02:00
|
|
|
Möglichkeiten für eine Optimierungen zulassen. Einzig das Parsen von Json ist in einem Webbrowser schneller als im
|
2024-09-26 23:43:15 +02:00
|
|
|
Server durchführbar. Auf diese Weise könnten zusätzlich die Ressourcen am Server reduziert werden beziehungsweise mit
|
2024-09-24 23:56:07 +02:00
|
|
|
gleichen Ressourcen mehr Anfragen als bisher beantwortet werden.
|
|
|
|
|
2024-09-26 23:43:15 +02:00
|
|
|
Die größten Optimierungspotentiale können durch Umstellung der Abfragen und der Optimierung des ORM"=Mappers umgesetzt
|
2024-09-24 23:56:07 +02:00
|
|
|
werden. Bei den Umstellungen der Abfragen ist größte Stärke, wenn die Anzahl der Abfragen drastisch reduziert werden
|
2024-09-27 20:58:59 +02:00
|
|
|
könnte.
|
2024-09-24 23:56:07 +02:00
|
|
|
|
|
|
|
Dadurch zeigt sich, dass die Untersuchung auf Ebene der ORM"=Mapper noch nicht abgeschlossen ist. Weitere Untersuchungen
|
|
|
|
nach anderen ORM"=Mapper könnten wie in \ref{sec:evaluation:materialized-view} angedeutet das Speicherproblem lösen,
|
|
|
|
sowie eine generelle Optimierung der Webseite zur Folge haben. Eine eigenständige Implementierung eines einfachen
|
|
|
|
ORM"=Mapper wäre auch in Betracht zu ziehen, solange sich die Komplexität der Daten"=Struktur nicht erhöht.
|