diff --git a/BBaum.tex b/BBaum.tex new file mode 100644 index 0000000..559316f --- /dev/null +++ b/BBaum.tex @@ -0,0 +1,75 @@ +\section{BBaum} +Idee: Zusammenfassung ganz bestimmter Sätze in einem Block. +Mehrwegbaum: jeder Knoten entspricht einem Block. + +\subsection{Aufbau} +Am Anfang eines jeden Knotens steht $n$. $n$ ist Anzahl der verwendeten +Einträge, $k \leq n \leq 2k$ (in root $ 1 \leq n \leq 2k$). + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/bbaumknoten.png} + \caption{BBaum Knoten} + \end{center} +\end{figure} +Danach folgen Tripel (Ki,Di,Pi) welche einen \textbf{Eintrag} bilden: +Ki = Schlüsselwert\\ +Di = Datensatz\\ +Pi = Zeiger auf Nachfolgeknoten +\subsection{Eigenschaften} +\begin{itemize} + \item jeder Pfad ist perfekt balanciert + \item jeder Knoten mit Ausnahme von root und Blättern hat + mindesten $k+1$ Nachfolger und höchstens $2k+1$ + \item jeder Knoten (Ausnahme root) immer mindestens halb voll +\end{itemize} +\subsection{Löschvorgang} +\begin{enumerate} + \item Suche Knoten, in dem der zu löschende Schlüssel S liegt + \item Falls S in Blattknoten, dann lösche S und behandle ggf Unterlauf + \item Fall S in innerem Knoten dann untersuche linken und rechten + Unterbaum von S + \begin{itemize} + \item finde direkten Vorgänger $\text{S}'$ und Nachfolger $\text{S}''$ + \item Wähle dne aus der mehr Elemente hat + \item Ersetze zu löschenden Schlüssel S durch $\text{S}'$ oder $\text{S}''$ aus gewähltem Blattknoten und behandle ggf Unterlauf + + \end{itemize} +\end{enumerate} +\subsection{Unterlauf} +\begin{itemize} + \item Ein endgülter Unterlauf entsteht bei obigen Algorithmus erst auf Blattebene + \item \textbf{Unterlaufbehandlung} wird durch MIschen des Unterlaufknotens mit seinem Nachbarknoten und darüber liegenden Diskriminator durchgeführt $\rightarrow$ Splitt rückwärts + \item Unterlaufbehandlung endet in einem der Blätter! +\end{itemize} +\subsection{B*-Baum} +Alle Sätze werden in den Blattknoten abgelegt. Innere Knoten enthalten nur noch Verzweigungsinformationen, keine Daten. +Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten am Ende. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/bstern.png} + \caption{B*-Baum Aufbau} + \end{center} +\end{figure} +\textbf{Merke:}\\ +Beim Löschen von Werten bleibt der gleiche Diskriminator in inneren +Knoten enthalten. +\subsection{Vergleich} +\begin{itemize} + \item BBaum: + \begin{itemize} + \item keine Redundanz + \item lesen von Baum Inorder nur mit Stack von Höhe h + \item Gergingerer Verzweigungsgrad $\rightarrow$ größere Höhe + \item einige wenige Sätze (root) mit 1 Blockzugirff + \end{itemize} + \item $\text{B}^*$Baum: + \begin{itemize} + \item Schöüsselwerte teilweise redundant + \item Kette von Blattknoten liefert alle Sätze nach Reihenfolge sortiert + \item hohe Verzweigung der inneren Knoten $\rightarrow$ geringe Höhe + \item für alle Blöcke müssen h Sätze gelesen werden + \item Schlüsselwerte der inneren Knoten müssen nicht in den + Datensätzen vorkommen + \end{itemize} +\end{itemize} diff --git a/IDB.tex b/IDB.tex index 152fe01..03ae93d 100644 --- a/IDB.tex +++ b/IDB.tex @@ -77,6 +77,7 @@ \newpage \include{./Einfuehrung} \include{./Saetze} +\include{./BBaum} \include{./Speicherung} \include{./Anfrageverarbeitung} \include{./Relationale_Operatoren} diff --git a/pics/bbaumknoten.png b/pics/bbaumknoten.png new file mode 100644 index 0000000..6cb04ee Binary files /dev/null and b/pics/bbaumknoten.png differ diff --git a/pics/bstern.png b/pics/bstern.png new file mode 100644 index 0000000..5fb5445 Binary files /dev/null and b/pics/bstern.png differ