bachelor-thesis/chapters/thesis/chapter07.tex

84 lines
6.2 KiB
TeX
Raw Normal View History

2024-09-13 13:21:22 +02:00
% !TeX root = ../../thesis.tex
\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.