Involvierte Definitionen
:Veranstaltung
: DEDSReferenz
: @storl2024 (KE7, Column Stores und In-Memory-Datenbanksysteme; Teil 2.5)
⠀
Definition: Differential Merge
Die Updates aus dem Differential Buffer werden mithilfe eines Differential Merges in die Hauptspeicherstruktur (Main Store) der Datenbank überführt.
Je größer der Differential Buffer, desto teurer ist der Merge. Daher werden die Daten regelmäßig zurück in den Main Store überführt. Beispielsweise, wenn die Anzahl der Elemente in dem Differential Buffer einen festgelegten Grenzwert überschreitet oder wenn bestimmte Queries länger dauern als ein festgelegter Grenzwert.
Eine Methode zur Durchführung ist der Online Merge.
Definition: Online Merge
Als Online Merge bezeichnen wir im Kontext von Datenbanken eine Methode zur Überführung eines Differential Buffers in die Hauptspeicherstruktur (Main Store).
Hierbei wird eine Duplikat des Main Stores erstellt, dieses wird auf Basis des Differential Buffers aktualisiert und anschließend wird der alte Main Store durch das aktualisierte Duplikat ersetzt.
Ein offensichtlicher Nachteil ist der hohe Speicherbedarf der Methode. Ein Vorteil ist, dass es nur zu einer sehr kurzen Downtime der Datenbank kommt.
Der Online Merge wird in drei Teilschritten vollzogen:
- Vorbereitung:
- Ungültige Datensätze (valid=
) werden in eine History Partition verschoben, die bspw. auf einer HDD oder SSD persistiert wird.
- Attribut Merge:
- Da die Kompressions-Codierungen zwischen Main Store und Differential Buffer unterschiedlich sind, wird zunächst ein Mapping zwischen beiden Codierungen erstellt.
- Anschließend werden die beiden Codierungen zusammengeführt und in den neuen Main Store geschrieben.
- Commit:
- Sobald der Attribut Merge abgeschlossen ist, wird die Datenbank kurzzeitig für Änderungen gesperrt und es wird gewartet, bis alle noch laufenden Transaktionen abgeschlossen sind.
- Alle nun noch abgeschlossenen Transaktionen werden in den neuen Main Store geschrieben.
- Der alte Main Store und der alte Differential Buffer sind nun obsolet und es wird jeweils auf den neuen Main Store und den neuen Differential Buffer umgeschaltet.
- Der doppelte Speicherbedarf wird wieder freigegeben.