Transaktionen

This commit is contained in:
Marco Ammon 2019-02-11 17:00:17 +01:00
parent f7a156defd
commit d712457fa2
2 changed files with 36 additions and 1 deletions

Binary file not shown.

View File

@ -225,7 +225,7 @@
\item Anfrage enthält Platzhalter für Werte
\item Analyse, Ausführungsplanerstellung und weiteres wird sofort durchgeführte
\item JDBC: \begin{itemize}
\item \texttt{PreparedStatement prep = con.prepareStatement("INSERT ... VALUES (?,?))}
\item \texttt{PreparedStatement prep = con.prepareStatement("INSERT \textellipsis VALUES (?,?))}
\item Setzen der Werte mittels \texttt{void setDATENTYP(int paramId, DATENTYP val)}
\item Ausführung mit \texttt{prep.executeUpdate()}
\end{itemize}
@ -241,4 +241,39 @@
\end{itemize}
\item \begriff{O/R-Mapping} bildet Objekte der Programmiersprace (meist durch Annotationen) auf Tupel der relationalen DB ab
\end{itemize}
\section{Transaktionen}
\begin{itemize}
\item sinnvoll für \wichtig{nebenläufigen} Zugriff
\item erleichtern Umgang mit \begriff{Fehlern} und Ausfällen
\item \begriff{Programmfehler}: Absturz des Datenbank-Anwendungsprogramms $\Rightarrow$ Daten im Puffer und auf Festplatte in undefiniertem Zustand
\item \begriff{Systemfehler}: DBVS oder BS fällt aus, Hardware-Fehler, \textellipsis $\Rightarrow$ Daten im Puffer verloren, auf Festplatte in undefiniertem Zustand
\item \begriff{Gerätefehler}: Festplattenausfall $\Rightarrow$ Daten auf Festplatte sind verloren
\item \begriff{physische Konsistenz}: \begin{itemize}
\item Korrektheit der Speicherungsstrukturen, Verweise und Adressen
\item alle Indizes sind vollständig und stimmen mit Primärdaten überein
\end{itemize}
\item \begriff{logische Konsistenz}: \begin{itemize}
\item Korrektheit der Inhalte
\item Referentielle Integrität, Primärschlüsseleigenschaft und eigene Assertions sind erfüllt
\item erfordert physische Konsistenz
\end{itemize}
\item Nach Fehler soll ein logisch konsistenter Zustand erreicht werden: \begin{itemize}
\item vor Beginn der unvollständigen Änderungen durch \begriff{Rückgängigmachen} dieser (\begriff{undo})
\item nach Abschluss aller Änderungen durch \begriff{Vervollständigung} bzw. \begriff{Wiederholung} der unvollständigen Änderungen (\begriff{redo})
\end{itemize}
\item \begriff{Sicherung} und \begriff{Protokollierung} \wichtig{immer} notwendig
\item \begriff{Transaktion} als \begriff{logische Einheit} einer Folge von DB-Operationen (von einem logisch konsistenten Zustand zum nächsten): \begin{itemize}
\item bei Fehler vor Ende: Rückgängigmachen der bisher durchgeführten Änderungen
\item bei Fehler nach Ende: kein Problem
\item Anfang meist implizit (oder \begriff{begin})
\item Ende durch \begriff{\wichtig}{commit} (Änderungen sollen durchgeführt werden) bzw. \begriff{abort} (Änderungen sollen verworfen werden)
\end{itemize}
\item \begriff{ACID}-Eigenschaften einer Transaktion: \begin{itemize}
\item \begriff{Atomarität} (\enquote{alles oder nichts} wird ausgeführt)
\item \begriff{Konsistenz}
\item \begriff{Isolation} (gegenüber anderen Zugriffen auf DB)
\item \begriff{Dauerhaftigkeit} (auch nach Fehler bleiben erfolgreiche Transaktionen bestehen)
\end{itemize}
\end{itemize}
\end{document}