bachelor-thesis/chapters/thesis/chapter07.tex

84 lines
6.4 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
\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-28 21:50:12 +02:00
die Optimierung implementiert, untersucht und jeweils mit der Ausgangsmessung verglichen. 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,
2024-09-28 13:33:24 +02:00
daher lag hier die Vermutung nahe, dass der Großteil der Zeit im \ac{ORM} verloren geht.
2024-09-22 19:32:07 +02:00
2024-09-28 16:16:31 +02:00
Die Methode der Nutzerumfrage wurde nicht weiterverfolgt, da diese auf Grund von 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-28 16:16:31 +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-28 13:33:24 +02:00
Bei den Caches sind der Query"=Cache und der \ac{EJB}"=Cache nicht für die Optimierung verwendbar. Der Query"=Cache wird
von OpenJPA nur verwendet, wenn die Abfrage keine Parameter besitzt, welche in der Dokumentliste verwendet werden
2024-09-28 21:50:12 +02:00
müssen. Im \ac{EJB}"=Cache werden nicht die Objekt, sondern die Provider gespeichert, wodurch hier keine Auswirkung auf die
2024-09-24 23:56:07 +02:00
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
2024-09-28 13:33:24 +02:00
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-28 13:33:24 +02:00
In beiden Fällen der Optimierung über die Nutzung eines Caches konnte durch die Messungen in der Software und der
2024-09-24 23:56:07 +02:00
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-28 13:33:24 +02:00
bezweckt, dass die unterlagerten Daten nicht einzeln für jede Zeile ermittelt werden, 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-28 21:50:12 +02:00
Mit der Übernahme der \textit{Materialized View} aus dem Wedekind"=Projekt kann eine gute Optimierung
2024-09-28 13:33:24 +02:00
beobachtet werden. Dies ist auf die einfachere Abfrage, die Reduzierung der Abfrage an den Datenbankserver und dass
die Objekte im eigenen Code erstellt werden zurückzuführen und nicht auf 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
2024-09-28 21:50:12 +02:00
für die weiteren Verlinkungen enorm reduziert wird. Somit konnte der Datenbankserver bei diesen Verlinkungen auf Indexe
zurückgreifen und damit die Abfragen zusätzlich beschleunigen.
2024-09-24 23:56:07 +02:00
Die Untersuchungen zeigen, dass mehrere Möglichkeiten zur Optimierung existierten, um die Zugriffe auf die
2024-09-28 21:50:12 +02:00
Briefeditionen zu beschleunigen und dass das größte Optimierungspotential in dem \ac{ORM} liegt. Die Umstellung auf
eine \textit{Materialized View} ist eine sinnvolle Wahl, wenn die Abfrage der Daten komplexer ist oder aus mehreren
n:m"=Beziehungen besteht. Bei der Verwendung eines Caches sollte darauf geachtet werden, dass die notwendigen
Ressourcen am Server bereitgestellt werden können und es wird empfohlen auf den Ehcache umzustellen.
2024-09-24 23:56:07 +02:00
\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-28 13:33:24 +02:00
Die größten Optimierungspotentiale können durch Umstellung der Abfragen und der Optimierung des \ac{ORM} umgesetzt
werden. Bei den Umstellungen der Abfragen ist die 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
2024-09-28 13:33:24 +02:00
Dadurch zeigt sich, dass die Untersuchung auf Ebene der \ac{ORM} noch nicht abgeschlossen ist. Weitere Untersuchungen
2024-09-28 21:50:12 +02:00
von anderen \ac{ORM} könnten wie in \autoref{sec:evaluation:materialized-view} angedeutet das Speicherproblem lösen,
2024-09-24 23:56:07 +02:00
sowie eine generelle Optimierung der Webseite zur Folge haben. Eine eigenständige Implementierung eines einfachen
2024-09-28 21:50:12 +02:00
\ac{ORM} wäre auch in Betracht zu ziehen, solange sich die Komplexität der Daten"=Struktur nicht erhöht.