Current checking
This commit is contained in:
parent
dd92b9c1ac
commit
a1829bfcfc
9 changed files with 150 additions and 86 deletions
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
|
@ -1,12 +1,14 @@
|
||||||
{
|
{
|
||||||
"cSpell.language": "de-de,en",
|
"cSpell.language": "de-de,en",
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"Glassfish",
|
|
||||||
"autovacuum",
|
"autovacuum",
|
||||||
"editionswissenschaftlich",
|
"editionswissenschaftlich",
|
||||||
"EFFW",
|
"EFFW",
|
||||||
"Fouine",
|
"Fouine",
|
||||||
"freigeschalten",
|
"freigeschalten",
|
||||||
|
"Galster",
|
||||||
|
"Glassfish",
|
||||||
|
"Konsolenanwendungen",
|
||||||
"Persistenzkontext",
|
"Persistenzkontext",
|
||||||
"Planerstatistiken",
|
"Planerstatistiken",
|
||||||
"Plantypen",
|
"Plantypen",
|
||||||
|
|
|
@ -3,75 +3,46 @@
|
||||||
%*******************************************************
|
%*******************************************************
|
||||||
% If problems with the headers: get headings in appendix etc. right
|
% If problems with the headers: get headings in appendix etc. right
|
||||||
%\markboth{\spacedlowsmallcaps{Appendix}}{\spacedlowsmallcaps{Appendix}}
|
%\markboth{\spacedlowsmallcaps{Appendix}}{\spacedlowsmallcaps{Appendix}}
|
||||||
\chapter{Umfrage}
|
\chapter{Umfrage zur Optimierung}
|
||||||
\label{ch:Umfrage}
|
\label{ch:Umfrage}
|
||||||
%Lorem ipsum at nusquam appellantur his, ut eos erant homero
|
|
||||||
%concludaturque. Albucius appellantur deterruisset id eam, vivendum
|
|
||||||
%partiendo dissentiet ei ius. Vis melius facilisis ea, sea id convenire
|
|
||||||
%referrentur, takimata adolescens ex duo. Ei harum argumentum per. Eam
|
|
||||||
%vidit exerci appetere ad, ut vel zzril intellegam interpretaris.
|
|
||||||
%\graffito{More dummy text.}
|
|
||||||
|
|
||||||
\section{Umfrage zur Optimierung der}
|
|
||||||
|
|
||||||
Herzlich Willkommen
|
Herzlich Willkommen
|
||||||
|
|
||||||
Dies Umfrage ist Teil der Bachelorarbeit "..." von Marco Galster, die Rahmen des Projektes "Edition der Korrespondenz
|
\hfill
|
||||||
Frank Wedekinds als Online-Volltextdatenbank (http://)" an der Fernuni Hagen durchgeführt wird. In der Bachelorarbeit
|
|
||||||
soll der aktuelle Prototyp auf Performance-Probleme untersucht und diese im Anschluss optimiert werden, um die
|
|
||||||
Benutzerfreundlichkeit und die Akzeptanz der Anwendung zu verbessern. Wodurch die Forschung der literarhistorische und
|
|
||||||
kulturgeschichtliche Wissen über die Kultur erweitert wird.
|
|
||||||
|
|
||||||
Der aktuelle Prototyp der Anwendung wird unter \href{https://briefedition.wedekind.h-da.de} bereitgestellt. Im Rahmen
|
Diese Umfrage ist Teil der Bachelorarbeit >>Analyse und Optimierung der Webseite des Wedekind Projektes<< von Marco
|
||||||
ihrer normalen Tätigkeit an dem Projekt, sind die Fragen zu beantworten. Bitte geben Sie so viele Information mit an
|
Galster, die Rahmen des Projektes >>Edition der Korrespondenz Frank Wedekinds als Online"=Volltextdatenbank<< an der
|
||||||
die ihnen zur Problem auffallen.
|
Fernuni Hagen durchgeführt wird. In der Bachelorarbeit soll der aktuelle Prototyp auf Performance"=Probleme untersucht
|
||||||
|
und im Anschluss optimiert werden, um die Benutzerfreundlichkeit und die Akzeptanz der Anwendung zu verbessern.
|
||||||
|
Dies soll dazu führen, dass die digitalen Briefeditionen verstärkt bei der Forschung zur literarhistorischen und
|
||||||
|
kulturgeschichtlichen Wissenssteigerung eingesetzt werden.
|
||||||
|
|
||||||
Wir bedanken uns im Voraus für ihre Zeit und die Teilnahme an der Umfrage. Für die Umfrage benötigen Sie ca. 20 Minuten.
|
\mytodos{der letzte Satz nochmal überarbeiten!}
|
||||||
|
|
||||||
\subsection{Allgemeine Angaben}
|
% helfen das die FOrschung mithilfe solcher datenbank vorrangetrieben wird und somit die foschung an briefedition das Wissen über die Kultur erweitert
|
||||||
|
\hfill
|
||||||
|
|
||||||
|
Der aktuelle Prototyp der Anwendung wird unter \href{https://briefedition.wedekind.h-da.de} bereitgestellt. Die Fragen
|
||||||
|
sind bitte im Rahmen ihrer normalen Tätigkeit an dem Projekt zu beantworten. Bitte geben Sie so viele Informationen
|
||||||
|
mit an, die ihnen zu den Problemen mit auffallen.
|
||||||
|
|
||||||
%\section{Appendix Section Test}
|
\hfill
|
||||||
%Test: \autoref{tab:moreexample} (This reference should have a
|
|
||||||
%lowercase, small caps \spacedlowsmallcaps{A} if the option
|
|
||||||
%\texttt{floatperchapter} is activated, just as in the table itself
|
|
||||||
% $\rightarrow$ however, this does not work at the moment.)
|
|
||||||
|
|
||||||
%\begin{table}[h]
|
Wir bedanken uns im Voraus für ihre Zeit und die Teilnahme an der Umfrage. Für die Umfrage benötigen Sie ca. 10 Minuten.
|
||||||
% \myfloatalign
|
|
||||||
% \begin{tabularx}{\textwidth}{Xll} \toprule
|
|
||||||
% \tableheadline{labitur bonorum pri no} & \tableheadline{que vista}
|
|
||||||
% & \tableheadline{human} \\ \midrule
|
|
||||||
% fastidii ea ius & germano & demonstratea \\
|
|
||||||
% suscipit instructior & titulo & personas \\
|
|
||||||
% %postulant quo & westeuropee & sanctificatec \\
|
|
||||||
% \midrule
|
|
||||||
% quaestio philosophia & facto & demonstrated \\
|
|
||||||
% %autem vulputate ex & parola & romanic \\
|
|
||||||
% %usu mucius iisque & studio & sanctificatef \\
|
|
||||||
% \bottomrule
|
|
||||||
% \end{tabularx}
|
|
||||||
% \caption[Autem usu id]{Autem usu id.}
|
|
||||||
% \label{tab:moreexample}
|
|
||||||
%\end{table}
|
|
||||||
|
|
||||||
%Nulla fastidii ea ius, exerci suscipit instructior te nam, in ullum
|
\hfill
|
||||||
%postulant quo. Congue quaestio philosophia his at, sea odio autem
|
|
||||||
%vulputate ex. Cu usu mucius iisque voluptua. Sit maiorum propriae at,
|
|
||||||
%ea cum primis intellegat. Hinc cotidieque reprehendunt eu nec. Autem
|
|
||||||
%timeam deleniti usu id, in nec nibh altera.
|
|
||||||
|
|
||||||
%\section{Another Appendix Section Test}
|
\begin{enumerate}
|
||||||
|
\item Welche Tätigkeit führen Sie aus? (Bearbeiter/Verwender)
|
||||||
|
|
||||||
%\begin{lstlisting}[float=b,language=Pascal,frame=tb,caption={A floating example (\texttt{listings} manual)},label=lst:useless]
|
\item Bitte geben Sie nun die Tätigkeiten an, bei denen immer wieder Verzögerung auftreten. Geben Sie bitte zu
|
||||||
%for i:=maxint downto 0 do
|
jeder Tätigkeit noch folgende Informationen mit an:
|
||||||
%begin
|
|
||||||
%{ do nothing }
|
|
||||||
%end;
|
|
||||||
%\end{lstlisting}
|
|
||||||
|
|
||||||
%Ei solet nemore consectetuer nam. Ad eam porro impetus, te choro omnes
|
\begin{itemize}
|
||||||
%evertitur mel. Molestie conclusionemque vel at, no qui omittam
|
\item Wie häufig tritt die Verzögerung auf? (in Abhängigkeit zum Aufruf)
|
||||||
%expetenda efficiendi. Eu quo nobis offendit, verterem scriptorem ne
|
\item Gibt es einen zeitlichen Bezug? (z.B. tritt die Verzögerung nur Vormittags auf)
|
||||||
%vix.
|
\item Tritt es immer einer bestimmten Abfolge auf, und wenn ja in welcher? (z.B. wenn man zuerst die
|
||||||
|
Benutzerliste anwählt und dann in den Bearbeiten-Modus wechselt)
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{enumerate}
|
||||||
|
|
|
@ -11,7 +11,7 @@ um eine längere Bearbeitung anzuzeigen.
|
||||||
\section{Motivation}
|
\section{Motivation}
|
||||||
\label{sec:intro:motivation}
|
\label{sec:intro:motivation}
|
||||||
|
|
||||||
Die Frank-Wedekind-Bibliothek soll als Grundlage weiterer Forschungen dienen. Durch die weitere Forschung soll die
|
Die Frank"=Wedekind"=Bibliothek soll als Grundlage weiterer Forschungen dienen. Durch die weitere Forschung soll die
|
||||||
literarhistorische und kulturgeschichtliche Wissen über die Kultur zwischen 1880 und 1918 erweitern. Um dieses
|
literarhistorische und kulturgeschichtliche Wissen über die Kultur zwischen 1880 und 1918 erweitern. Um dieses
|
||||||
Vorhaben umsetzen zu können muss die Anwendung dem Benutzer gerecht werden, damit diese verwendet wird und somit
|
Vorhaben umsetzen zu können muss die Anwendung dem Benutzer gerecht werden, damit diese verwendet wird und somit
|
||||||
den Wissenstand entsprechend erweitert werden kann.
|
den Wissenstand entsprechend erweitert werden kann.
|
||||||
|
@ -48,7 +48,7 @@ Nachfolgenden wird im Kapitel \ref{ch:concept} die Konzepte vorgestellt mit welc
|
||||||
Hierbei ist zusätzlich ein Blick auf andere Frameworks sinnvoll, um dort aus den bekannten Anomalien zu lernen und
|
Hierbei ist zusätzlich ein Blick auf andere Frameworks sinnvoll, um dort aus den bekannten Anomalien zu lernen und
|
||||||
deren Lösungsansatz zu überprüfen ob diese angewandt werden kann.
|
deren Lösungsansatz zu überprüfen ob diese angewandt werden kann.
|
||||||
|
|
||||||
Bei den Performance-Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
Bei den Performance"=Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
||||||
die Problemstellen zu identifizieren. Diese werden dann bewertet, unter den Gesichtspunkten ob eine Optimierung an
|
die Problemstellen zu identifizieren. Diese werden dann bewertet, unter den Gesichtspunkten ob eine Optimierung an
|
||||||
dieser Stelle sinnvoll ist, oder ob der Arbeitsaufwand dafür zu enorm ist.
|
dieser Stelle sinnvoll ist, oder ob der Arbeitsaufwand dafür zu enorm ist.
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,16 @@
|
||||||
\label{ch:basics}
|
\label{ch:basics}
|
||||||
|
|
||||||
Da die Anwendung als Webseite umgesetzt ist, ist der zugehörige Client für den Benutzer ein Webbrowser. Dies bedeutet,
|
Da die Anwendung als Webseite umgesetzt ist, ist der zugehörige Client für den Benutzer ein Webbrowser. Dies bedeutet,
|
||||||
das jeder Wechsel einer Seite oder eine Suchanfrage als Web-Request an den Server geschickt wird. Solch ein Web-Request
|
das jeder Wechsel einer Seite oder eine Suchanfrage als Web"=Request an den Server geschickt wird. Solch ein Web"=Request
|
||||||
geht durch mehrere Schichten des Server-System bis die Antwort an den Client zurückgesendet wird, wie in
|
geht durch mehrere Schichten des Server"=System bis die Antwort an den Client zurückgesendet wird, wie in
|
||||||
\ref{fig:webrequest} dargestellt.
|
\ref{fig:webrequest} dargestellt.
|
||||||
|
|
||||||
Angefangen bei der Anfrage die über den Webbrowser an den Server gestellt wird und vom \textit{Glassfish}-Server
|
Angefangen bei der Anfrage die über den Webbrowser an den Server gestellt wird und vom \textit{Glassfish}"=Server
|
||||||
empfangen wird. In diesem wird anhand des definierten Routing entschieden, an welche \textit{Java Server Page} die
|
empfangen wird. In diesem wird anhand des definierten Routing entschieden, an welche \textit{Java Server Page} die
|
||||||
Anfrage weitergeleitet und verarbeitet wird. In dieser wird die Darstellung der Webseite geladen und die Anfragen für
|
Anfrage weitergeleitet und verarbeitet wird. In dieser wird die Darstellung der Webseite geladen und die Anfragen für
|
||||||
den darzustellenden Datenbestand abgeschickt.
|
den darzustellenden Datenbestand abgeschickt.
|
||||||
|
|
||||||
Die Datenanfragen werden über die \textit{Enterprise Java Beans} an die \textit{Java Persistance API} weitergeleitet.
|
Die Datenanfragen werden über die \textit{\ac{EJB}} an die \textit{\ac{JPA}} weitergeleitet.
|
||||||
Hier wird nun geprüft, ob die Daten aus dem \textit{OpenJPA Cache} direkt ermittelt werden können, oder ob die Abfrage
|
Hier wird nun geprüft, ob die Daten aus dem \textit{OpenJPA Cache} direkt ermittelt werden können, oder ob die Abfrage
|
||||||
an das unterlagerte Datenbankmanagementsystem \textit{PostgreSQL} weitergeleitet werden muss. Die ermittelten Daten vom
|
an das unterlagerte Datenbankmanagementsystem \textit{PostgreSQL} weitergeleitet werden muss. Die ermittelten Daten vom
|
||||||
DBMS werden bei Bedarf im \textit{OpenJPA Cache} aktualisiert.
|
DBMS werden bei Bedarf im \textit{OpenJPA Cache} aktualisiert.
|
||||||
|
@ -64,20 +64,20 @@ zu verringern. Um Anfragen die den Zugriff auf die Festplatte benötigen effizie
|
||||||
\section{Glassfish - Enterprise Java Beans}
|
\section{Glassfish - Enterprise Java Beans}
|
||||||
\label{sec:basics:ejb}
|
\label{sec:basics:ejb}
|
||||||
|
|
||||||
In den Java-EE-An\-wen\-dung\-en wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application-Server}
|
In den Java"=EE"=Anwendungen wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application"=Server}
|
||||||
bereitgestellt. Hierfür werden \textit{Application-Server} wie \textit{GlassFish} genutzt, um die Verwendung eines Pools
|
bereitgestellt. Hierfür werden \textit{Application"=Server} wie \textit{GlassFish} genutzt, um die Verwendung eines Pools
|
||||||
von Datenbankverbindungen zu definieren \citep[68]{MüllerWehr2012}. Dadurch kann die Anzahl der Verbindung geringer
|
von Datenbankverbindungen zu definieren \citep[68]{MüllerWehr2012}. Dadurch kann die Anzahl der Verbindung geringer
|
||||||
gehalten werden als die Anzahl der Benutzer die an der Anwendung arbeiten. Zusätzlich werden die Transaktionen über
|
gehalten werden als die Anzahl der Benutzer die an der Anwendung arbeiten. Zusätzlich werden die Transaktionen über
|
||||||
\textit{Stateful Session-Bean (SFSB)} gehandhabt, welche automatisch vor dem Aufruf erzeugt und danach wieder gelöscht
|
\textit{\ac{SFSB}} gehandhabt, welche automatisch vor dem Aufruf erzeugt und danach wieder gelöscht
|
||||||
werden. Dies birgt allerdings den Nachteil, dass der \textit{Persistenzkontext} sehr groß werden kann, wenn viele
|
werden. Dies birgt allerdings den Nachteil, dass der \textit{Persistenzkontext} sehr groß werden kann, wenn viele
|
||||||
Entities in den \textit{Persistenzkontext} geladen werden. Da dies häufig zu Speicher- und damit Performanz-Problemen
|
Entities in den \textit{Persistenzkontext} geladen werden. Da dies häufig zu Speicher"~ und damit Performanz"=Problemen
|
||||||
\citep[79]{MüllerWehr2012} führen kann, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem
|
\citep[79]{MüllerWehr2012} führen kann, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem
|
||||||
\textit{Persistenzkontext} zu lösen.
|
\textit{Persistenzkontext} zu lösen.
|
||||||
|
|
||||||
\section{Glassfish - Java Persistance API}
|
\section{Glassfish - Java Persistance API}
|
||||||
\label{sec:basics:jpa}
|
\label{sec:basics:jpa}
|
||||||
|
|
||||||
Die \textit{Java Persistence API (JPA)} wird als First-Level-Cache in Java-EE-An\-wen\-dung verwendet, hier nehmen die
|
Die \textit{\ac{JPA}} wird als First"=Level"=Cache in Java"=EE"=Anwendung verwendet, hier nehmen die
|
||||||
Objekte einen von vier Zuständen ein \citep[57]{MüllerWehr2012}. Im Zustand \textit{Transient} sind die Objekt erzeugt,
|
Objekte einen von vier Zuständen ein \citep[57]{MüllerWehr2012}. Im Zustand \textit{Transient} sind die Objekt erzeugt,
|
||||||
aber noch nicht in den Cache überführt worden. Wenn diese in den Cache überführt worden sind, nehmen sie den Zustand
|
aber noch nicht in den Cache überführt worden. Wenn diese in den Cache überführt worden sind, nehmen sie den Zustand
|
||||||
\textit{Verwaltet} ein. Ist das Objekt aus dem Cache und der Datenbank entfernt worden, nimmt es den Zustand
|
\textit{Verwaltet} ein. Ist das Objekt aus dem Cache und der Datenbank entfernt worden, nimmt es den Zustand
|
||||||
|
@ -94,16 +94,16 @@ Eine Menge von Objekten wird als \textit{Persistenzkontext} bezeichnet. Solange
|
||||||
|
|
||||||
Zusätzlich kann im \textit{JPA} ebenfalls noch der \textit{Second Level Cache} (L2-Cache) aktiviert werden. Dieser steht
|
Zusätzlich kann im \textit{JPA} ebenfalls noch der \textit{Second Level Cache} (L2-Cache) aktiviert werden. Dieser steht
|
||||||
jedem \textit{Persistenzkontext} zur Verfügung und kann dadurch die Anzahl der Datenbankzugriffe deutlich reduzieren,
|
jedem \textit{Persistenzkontext} zur Verfügung und kann dadurch die Anzahl der Datenbankzugriffe deutlich reduzieren,
|
||||||
was bei langsamen Datenbank-Anbindungen zu hohen Performance-Gewinnen führen kann \citep[171]{MüllerWehr2012}.
|
was bei langsamen Datenbank"=Anbindungen zu hohen Performance"=Gewinnen führen kann \citep[171]{MüllerWehr2012}.
|
||||||
Gegen die Verwendung spricht, dass die Daten im \textit{Second Level Cache} explizit über Änderungen informiert werden
|
Gegen die Verwendung spricht, dass die Daten im \textit{Second Level Cache} explizit über Änderungen informiert werden
|
||||||
müssen, welche sonst beim nächsten Aufruf veraltete Werte liefern. Ebenfalls benötigt so ein Cache einen höheren Bedarf
|
müssen, welche sonst beim nächsten Aufruf veraltete Werte liefern. Ebenfalls benötigt so ein Cache einen höheren Bedarf
|
||||||
an Arbeitsspeicher, in dem die Daten parallel zur Datenbank bereitgestellt werden, daher ist die Benutzung nur
|
an Arbeitsspeicher, in dem die Daten parallel zur Datenbank bereitgestellt werden, daher ist die Benutzung nur
|
||||||
problemlos bei Entities möglich, auf die meist lesend zugegriffen wird.
|
problemlos bei Entities möglich, auf die meist lesend zugegriffen wird.
|
||||||
|
|
||||||
In der OpenJPA-Erweiterung für den L2-Cache, wird in \textit{Objekt-Cache} (in OpenJPA als \textit{DataCache}
|
In der OpenJPA"=Erweiterung für den L2-Cache, wird in \textit{Objekt-Cache} (in OpenJPA als \textit{DataCache}
|
||||||
bezeichnet) und Query-Cache unterschieden. Über die Funktionen \texttt{find()} und \texttt{refresh()} oder einer Query
|
bezeichnet) und Query-Cache unterschieden. Über die Funktionen \texttt{find()} und \texttt{refresh()} oder einer Query
|
||||||
werden die geladenen Entities in den Cache gebracht. Davon ausgenommen sind \textit{Large Result Sets} (Abfragen die
|
werden die geladenen Entities in den Cache gebracht. Davon ausgenommen sind \textit{Large Result Sets} (Abfragen die
|
||||||
nicht alle Daten auf einmal laden), \texttt{Extent}-Technologien und Queries, die einzelne Attribute von Entities
|
nicht alle Daten auf einmal laden), \texttt{Extent}"=Technologien und Queries, die einzelne Attribute von Entities
|
||||||
zurückliefern, aber nicht das Entity selbst. Hierbei kann genau gesteuert werden, welche Entity in den Cache abgelegt
|
zurückliefern, aber nicht das Entity selbst. Hierbei kann genau gesteuert werden, welche Entity in den Cache abgelegt
|
||||||
wird und welche nicht. Ebenfalls kann auf Klassenbasis der zugehörige Cache definiert werden, um eine bessere
|
wird und welche nicht. Ebenfalls kann auf Klassenbasis der zugehörige Cache definiert werden, um eine bessere
|
||||||
Last-Verteilung beim Zugriff zu ermöglichen \citep[314]{MüllerWehr2012}.
|
Last-Verteilung beim Zugriff zu ermöglichen \citep[314]{MüllerWehr2012}.
|
||||||
|
@ -114,14 +114,14 @@ Entities gespeichert. Bei einen erneuten Aufruf dieser Abfrage werden die refere
|
||||||
genutzt und die betroffenen Abfragen werden unverzüglich aus dem \textit{Query-Cache} entfernt
|
genutzt und die betroffenen Abfragen werden unverzüglich aus dem \textit{Query-Cache} entfernt
|
||||||
\citep[316]{MüllerWehr2012}.
|
\citep[316]{MüllerWehr2012}.
|
||||||
|
|
||||||
Um zu prüfen, ob die Einstellungen sinnvoll gesetzt sind, kann in OpenJPA eine Cache-Statistik abgefragt werden. Mit
|
Um zu prüfen, ob die Einstellungen sinnvoll gesetzt sind, kann in OpenJPA eine Cache"=Statistik abgefragt werden. Mit
|
||||||
dieser kann die Anzahl der Lese- und Schreibzugriffe im Cache überprüft werden, entsprechend dieser Auswertung sollten
|
dieser kann die Anzahl der Lese"~ und Schreibzugriffe im Cache überprüft werden, entsprechend dieser Auswertung sollten
|
||||||
die Einstellungen an den Entities angepasst werden \citep{IbmOpenJPACaching2023}.
|
die Einstellungen an den Entities angepasst werden \citep{IbmOpenJPACaching2023}.
|
||||||
|
|
||||||
\section{PostgreSQL - Memory Buffers}
|
\section{PostgreSQL - Memory Buffers}
|
||||||
\label{sec:basics:memorybuffers}
|
\label{sec:basics:memorybuffers}
|
||||||
|
|
||||||
Die Speicherverwaltung des PostgreSQL-Servers muss für Produktivsysteme angepasst werden \citep[34-38]{Eisentraut2013}.
|
Die Speicherverwaltung des PostgreSQL"=Servers muss für Produktivsysteme angepasst werden \citep[34-38]{Eisentraut2013}.
|
||||||
Hierunter fallen die \textit{shared\_buffers} die bei ca. 10 bis 25 Prozent des verfügbaren Arbeitsspeichers liegen
|
Hierunter fallen die \textit{shared\_buffers} die bei ca. 10 bis 25 Prozent des verfügbaren Arbeitsspeichers liegen
|
||||||
sollten. Mit dieser Einstellung wird das häufige Schreiben des Buffers durch Änderungen von Daten und Indexen auf die
|
sollten. Mit dieser Einstellung wird das häufige Schreiben des Buffers durch Änderungen von Daten und Indexen auf die
|
||||||
Festplatte reduziert.
|
Festplatte reduziert.
|
||||||
|
@ -144,12 +144,12 @@ somit die Performance hebt, beachtet die Obergrenze ebenfalls.
|
||||||
|
|
||||||
Die Wartung des Datenbanksystems ist eine der wichtigsten Aufgaben und sollte regelmäßig
|
Die Wartung des Datenbanksystems ist eine der wichtigsten Aufgaben und sollte regelmäßig
|
||||||
durchgeführt werden, damit die Performance des Systems durch die Änderungen des Datenbestands nicht einbricht
|
durchgeführt werden, damit die Performance des Systems durch die Änderungen des Datenbestands nicht einbricht
|
||||||
\citep[75]{Eisentraut2013}. Hierfür gibt es den \texttt{VACUUM}-Befehl, welcher entweder per Hand oder automatisch durch
|
\citep[75]{Eisentraut2013}. Hierfür gibt es den \texttt{VACUUM}"=Befehl, welcher entweder per Hand oder automatisch durch
|
||||||
das Datenbanksystem ausgeführt werden soll. Für die automatische Ausführung kann der maximal verwendete Speicher über
|
das Datenbanksystem ausgeführt werden soll. Für die automatische Ausführung kann der maximal verwendete Speicher über
|
||||||
die Einstellung \textit{autovacuum\_work\_mem} gesondert definiert werden \citep{PostgresPro:Chap20.4:2023}.
|
die Einstellung \textit{autovacuum\_work\_mem} gesondert definiert werden \citep{PostgresPro:Chap20.4:2023}.
|
||||||
Neben dem Aufräumen durch \texttt{VACUUM}, sollten auch die Planerstatistiken mit \texttt{ANALYZE}
|
Neben dem Aufräumen durch \texttt{VACUUM}, sollten auch die Planerstatistiken mit \texttt{ANALYZE}
|
||||||
\citep[83]{Eisentraut2013} aktuell gehalten werden, damit die Anfragen durch den Planer richtig optimiert werden können.
|
\citep[83]{Eisentraut2013} aktuell gehalten werden, damit die Anfragen durch den Planer richtig optimiert werden können.
|
||||||
Für beide Wartungsaufgaben gibt es den Autovacuum-Dienst, dieser sollte aktiv und richtig konfiguriert sein.
|
Für beide Wartungsaufgaben gibt es den Autovacuum"=Dienst, dieser sollte aktiv und richtig konfiguriert sein.
|
||||||
|
|
||||||
Mit dem Tool \textit{pgFouine} \citep[155]{Eisentraut2013} können die Logs des PostgreSQL Server analysiert und auf
|
Mit dem Tool \textit{pgFouine} \citep[155]{Eisentraut2013} können die Logs des PostgreSQL Server analysiert und auf
|
||||||
Probleme hin untersucht werden. Hiermit können sehr einfach die häufigsten bzw. langsamsten Anfragen ermittelt werden.
|
Probleme hin untersucht werden. Hiermit können sehr einfach die häufigsten bzw. langsamsten Anfragen ermittelt werden.
|
||||||
|
|
|
@ -5,10 +5,6 @@
|
||||||
\section{Aufbau der Umfrage}
|
\section{Aufbau der Umfrage}
|
||||||
\label{sec:concept:poll}
|
\label{sec:concept:poll}
|
||||||
|
|
||||||
% erste Frage sollte unterscheiden ob Bearbeiter oder Benutzer ist
|
|
||||||
% an welchen Aktion kommt es zu längeren Wartezeiten
|
|
||||||
% wie häufig sind die langen Wartezeiten
|
|
||||||
% treten sie sporadisch oder immer mit gleichen Muster (z.B. immer Nachmittags, immer bei der gleichen Abfolge an Aktionen) auf
|
|
||||||
|
|
||||||
Die Umfrage wird über Email an die XX Personen verschickt. Als Basis für die Umfrage wird der aktuelle Prototyp
|
Die Umfrage wird über Email an die XX Personen verschickt. Als Basis für die Umfrage wird der aktuelle Prototyp
|
||||||
unter \href{https://briefedition.wedekind.h-da.de} verwendet. Hierbei wird die gleiche Umfrage für Bearbeiter
|
unter \href{https://briefedition.wedekind.h-da.de} verwendet. Hierbei wird die gleiche Umfrage für Bearbeiter
|
||||||
|
@ -31,7 +27,7 @@ Die Anfrage wird im Anhang \ref{ch:Umfrage} dargestellt.
|
||||||
Für die Untersuchung des Systems wird der direkte Zugang zum Server benötigt. Hierbei werden zuerst die im Kapitel
|
Für die Untersuchung des Systems wird der direkte Zugang zum Server benötigt. Hierbei werden zuerst die im Kapitel
|
||||||
\ref{sec:basics:services} beschriebenen Einstellungen überprüft.
|
\ref{sec:basics:services} beschriebenen Einstellungen überprüft.
|
||||||
|
|
||||||
Zuerst wird am PostgreSQL-Server die Konfiguration der Speicher mit der Vorgabe für Produktivsystem abgeglichen.
|
Zuerst wird am PostgreSQL"=Server die Konfiguration der Speicher mit der Vorgabe für Produktivsystem abgeglichen.
|
||||||
Hierunter fallen die Einstellungen für die \textit{shared\_buffers}, der bei einem Arbeitsspeicher von mehr als 1 GB
|
Hierunter fallen die Einstellungen für die \textit{shared\_buffers}, der bei einem Arbeitsspeicher von mehr als 1 GB
|
||||||
ca. 25\% des Arbeitsspeicher definiert sein soll \cite{PostgresC20.4:2024}.
|
ca. 25\% des Arbeitsspeicher definiert sein soll \cite{PostgresC20.4:2024}.
|
||||||
|
|
||||||
|
@ -55,12 +51,12 @@ Hierbei kann es mehrere Faktoren geben. Zum einem führt das Paging des Arbeitss
|
||||||
klein gewählter Cache oder gar zu wenig Arbeitsspeicher erhöhen die Zugriffe auf die Festplatte, da weniger
|
klein gewählter Cache oder gar zu wenig Arbeitsspeicher erhöhen die Zugriffe auf die Festplatte, da weniger
|
||||||
zwischengespeichert werden kann und daher diese Daten immer wieder direkt von der Festplatte geladen werden müssen.
|
zwischengespeichert werden kann und daher diese Daten immer wieder direkt von der Festplatte geladen werden müssen.
|
||||||
|
|
||||||
\mytodos{Bespreibung der untersuchung von Glassfisch? ode lieber später}
|
\mytodos{Bespreibung der untersuchung von Glassfisch? oder lieber später}
|
||||||
|
|
||||||
\section{Das Vorgehen der Optimierung}
|
\section{Das Vorgehen der Optimierung}
|
||||||
\label{sec:concept:optimizing}
|
\label{sec:concept:optimizing}
|
||||||
|
|
||||||
\mytodos{Bespreibung der untersuchung von Glassfisch? ode lieber später}
|
\mytodos{Beschreibung der Untersuchung von Glassfisch? oder lieber später, oder doch eher umbennen in Ermittlung der Performance-Probleme}
|
||||||
|
|
||||||
% Anhand der Umfragen werden die verschiedenen Seiten ermittelt und mit den Tools überprüft
|
% Anhand der Umfragen werden die verschiedenen Seiten ermittelt und mit den Tools überprüft
|
||||||
% Während dessen kann über ein Script die Seite automatisiert abgefragt und das Trace aktiv sind
|
% Während dessen kann über ein Script die Seite automatisiert abgefragt und das Trace aktiv sind
|
||||||
|
@ -76,3 +72,91 @@ zwischengespeichert werden kann und daher diese Daten immer wieder direkt von de
|
||||||
\label{sec:concept:technologiecompare}
|
\label{sec:concept:technologiecompare}
|
||||||
|
|
||||||
% Vergleich mit AspNetCore und vielleicht VueJS oder Konsorten, wobei hier der Serverteil fehlt
|
% Vergleich mit AspNetCore und vielleicht VueJS oder Konsorten, wobei hier der Serverteil fehlt
|
||||||
|
|
||||||
|
Damit eine Umsetzung mit einer anderen Technologie umgesetzt werden kann, muss dies den kompletten Aufbau unterstützen,
|
||||||
|
wie dies die \ac{JSP} unterstützen. Daher fallen reine FrontEnd"=Bibliotheken wie VueJS oder React aus der Betrachtung
|
||||||
|
heraus.
|
||||||
|
|
||||||
|
\subsection{ASP.NET Core}
|
||||||
|
\label{sec:concept:technologiecompare:aspnetcore}
|
||||||
|
|
||||||
|
\mytodos{Anpassen auf "Kernpunkte"?}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Vorteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gute Entwicklungsumgebung
|
||||||
|
\item EntityFramework als \ac{ORM}
|
||||||
|
\item Große Auswahl an Erweiterungen durch NuGet-Pakete
|
||||||
|
\item Betriebssystem unabhängig
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Nachteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Beim Vergleich zu \ac{JSP} steht ASP.NET Core nicht hinten an. Im großen und ganzen ist der Funktionsumfang der gleiche
|
||||||
|
und mit EntityFramework gibt es ebenfalls einen sehr mächtigen \ac{ORM}. Hier sehe ich nur ebenfalls ein ähnliches
|
||||||
|
Problem beim Caching wie bei OpenJPA, dass diese zu Problemen führen kann, wenn der Speicher voll wird.
|
||||||
|
% Ersatz für EF?
|
||||||
|
|
||||||
|
C\# wird ebenfalls wie Java in einen Zwischencode übersetzt und erst bei der Ausführung auf die Zielplattform übersetzt.
|
||||||
|
Hierbei haben die meistens Test gezeigt, dass das .NET Framework hier um einiges Effizienter und schneller arbeitet als
|
||||||
|
die Java Runtime. Zusätzlich wird bei ASP.NET Core nicht noch ein zusätzlicher Server benötigt um die Anwendung aktiv
|
||||||
|
zu halten.
|
||||||
|
|
||||||
|
\subsection{Golang}
|
||||||
|
\label{sec:concept:technologiecompare:go}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Vorteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item schnelle und einfache Entwicklung
|
||||||
|
\item Native Übersetzung der Anwendung (hohe Performance)
|
||||||
|
\item Betriebssystem unabhängig
|
||||||
|
\item Gut geeignet für Microservices
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Nachteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Neue Programmiersprache, noch wenige Programmierer
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Schnelle und einfache Entwicklung durch das grundsätzliche Konzept der neuen Sprache
|
||||||
|
Ist wiederrum aber der nachteil dass es noch nicht viele können.
|
||||||
|
Ist aber wiederrum sehr schnell und effizient und für Microservices gedacht.
|
||||||
|
Reiner \ac{ORM} vorhanden, ohne weitere Caching und halten von Daten.
|
||||||
|
|
||||||
|
\subsection{PHP}
|
||||||
|
\label{sec:concept:technologiecmopare:php}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Vorteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Text-Editor reicht
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Nachteile:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Script-Sprache
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Fazit}
|
||||||
|
\label{sec:concept:technologiecompare:summary}
|
||||||
|
|
||||||
|
\mytodos{Noch entscheiden, ob der Compare direkt bei der Technologie gemacht \\ wird, oder allgemein am ende}
|
||||||
|
|
||||||
|
PHP fällt aufgrund der Script-Sprache raus, da dies nicht verteilbar ist und an den Uni keine Entwickler zu finden sind.
|
||||||
|
Bei Go sind es ebenfalls hauptsächlich die nicht vorhandenen Entwickler an der Uni
|
||||||
|
ASP.NET Core ist im Vergleich zu JSP identisch, aber auch hier werden aktuell die Entwickler fehlen, da Java in den
|
||||||
|
Vorlesungen dran genommen wird.
|
|
@ -4,6 +4,8 @@
|
||||||
\begin{otherlanguage}{ngerman}
|
\begin{otherlanguage}{ngerman}
|
||||||
\pdfbookmark[0]{Zusammenfassung}{Zusammenfassung}
|
\pdfbookmark[0]{Zusammenfassung}{Zusammenfassung}
|
||||||
\chapter*{Zusammenfassung}
|
\chapter*{Zusammenfassung}
|
||||||
|
\mytodos{Dies am Ende noch Ausfüllen!!!}
|
||||||
|
|
||||||
Kurze Zusammenfassung des Inhaltes in deutscher Sprache von ca. einer Seite länge. Dabei sollte vor allem auf die folgenden Punkte eingegangen werden:
|
Kurze Zusammenfassung des Inhaltes in deutscher Sprache von ca. einer Seite länge. Dabei sollte vor allem auf die folgenden Punkte eingegangen werden:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Motivation: Wieso ist diese Arbeit entstanden? Warum ist das Thema der Arbeit (für die Allgemeinheit) interessant? Dabei sollte die Motivation von der konkreten Aufgabenstellung, z.B. durch eine Firma, weitestgehend abstrahiert werden.
|
\item Motivation: Wieso ist diese Arbeit entstanden? Warum ist das Thema der Arbeit (für die Allgemeinheit) interessant? Dabei sollte die Motivation von der konkreten Aufgabenstellung, z.B. durch eine Firma, weitestgehend abstrahiert werden.
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
\begin{otherlanguage}{american}
|
\begin{otherlanguage}{american}
|
||||||
\pdfbookmark[0]{Abstract}{Abstract}
|
\pdfbookmark[0]{Abstract}{Abstract}
|
||||||
\chapter*{Abstract}
|
\chapter*{Abstract}
|
||||||
|
\mytodos{Dies am Ende noch Ausfüllen!!!}
|
||||||
|
|
||||||
A short summary of the contents in English of about one page. The following points should be addressed in particular:
|
A short summary of the contents in English of about one page. The following points should be addressed in particular:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Motivation: Why did this work come about? Why is the topic of the work interesting (for the general public)? The motivation should be abstracted as far as possible from the specific tasks that may be given by a company.
|
\item Motivation: Why did this work come about? Why is the topic of the work interesting (for the general public)? The motivation should be abstracted as far as possible from the specific tasks that may be given by a company.
|
||||||
|
|
|
@ -9,8 +9,11 @@
|
||||||
\markboth{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}
|
\markboth{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}
|
||||||
\chapter*{Abk\"{u}rzungsverzeichnis}
|
\chapter*{Abk\"{u}rzungsverzeichnis}
|
||||||
|
|
||||||
% Insert your acronyms here
|
% Insert your acronyms here (Das Kürzel mit der längsten Bezeichnung sollte in den eckigen Klammern eingetragen werden)
|
||||||
\begin{acronym}[UML]
|
\begin{acronym}[API]
|
||||||
|
\acro{EJB}{Enterprise Java Beans}
|
||||||
|
\acro{JSP}{Java Server Page}
|
||||||
|
\acro{ORM}{Object Relational Mapping}
|
||||||
\acro{SFSB}{Stateful Session-Bean}
|
\acro{SFSB}{Stateful Session-Bean}
|
||||||
\acro{JPA}{Java Persistence API}
|
\acro{JPA}{Java Persistence API}
|
||||||
\acro{API}{Application Programming Interface}
|
\acro{API}{Application Programming Interface}
|
||||||
|
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
Loading…
Reference in a new issue