Modul 10: In Memory Datenbanken Flashcards
Agenda
- Motivationsübung
- Gründe/Motivation für
In-Memory Datenbanken - Fortschritte bei der
Hardware Entwicklung - Partitionierung
- Kompression
- Tupel Rekonstruktion
- Scan Performance
- Auswirkungen von DML Statements
- Re-Merge des Differential Buffers
- Indizes
- Aggregate
- Logging und Recovery
- Data Aging
- Reorganisation
Was bedeutet der Begriff Dictionary Encoding im Column Store?
• Spalte wird in ein Dictionary und einen Attributvektor geteilt
• Dictionary speichert alle vorkommenden Werte genau einmal und versieht
sie mit einer ValueID
• Attributvektor speichert für jedes Element in der Spalte die entsprechende
ValueID
• Keine Zeilen mehr!
Was spricht für In Memory Datenbanken?
Unterpunkt: Was sind typische Applikationen in Unternehmen?
1. Transactional o Transaktionale Applikationen o User Interaktionen o Maschinen 2. Analytics o Reporting o Planung o Simulation 3. Event Processing o Maschinen o Sensoren 4. Text Analyse / Unstrukturierte Daten o Web o Social media o Logfiles o Support Systeme
Konsequenz:
Spezifische (Datenbank-) Applikationen in Unternehmen gehen unterschiedlich mit Datenerfassung, -speicherung und –verarbeitung
um und sind meist entweder für Transaktionen oder Analyse optimiert.
Gründe für IMDB
Gegenüberstellung OLTP vs. OLAP Systeme
OLTP:
- Hohe Anzahl meist einfacher Adhoc Transaktionen
- Viele parallele Nutzer
- Viele Schreib- und Lesezugriffe
- Rollenbasiert
- Kurze Transaktionen
- Kleine Ergebnismenge
OLAP:
- Weniger Transaktionen dafür komplexe Rechenoperationen
- Weniger parallele Nutzer
- Hauptsächlich Lesezugriffe meist für umfassende Berichte
- Für bestimmte Nutzer (Sales Account Executive, Executive Board)
- Lange Transaktionen
- Sehr grosse Ergebnismenge
Gründe für IMDB
Konsequenzen aus der Zusammenarbeit von OLTP und OLAP Systemen nach der Gegenüberstellung OLTP vs. OLAP Systemen
- Hoher Synchronisations Aufwand zwischen Systemen, meist OLTP → OLAP
- Zeitverzug, oft nicht die neusten Daten im OLAP System
- Redundanzen
- Inkonsistenzen
- Unterschiedliche Datenschemas
- Erhöhte Kosten durch Beschaffung und Betrieb
- Hoher Aufwand für Aggregate
- Günstigere Hardware mit grossem Hauptspeicher
Gründe für IMDB
Weshalb ausgerechnet ein Column Store?
- Viele Spalten werden gar nicht genutzt (~50% aller Spalten)
- Viele Spalten haben sehr niedrige Kardinalität (z.B. Land, Geschlecht, …)
- Viele NULL / DEFAULT Werte
- Niedrige statistische Verteilung der Dateninhalte unterstützen Kompression
Gründe für IMDB
Fazit
Sind OLTP und OLAP wirklich so unterschiedlich?
• Analyse über sehr viele Kundensysteme zeigt, dass Schreib- und Lesezugriffe sich nicht
signifikant unterscheiden
• Je nach Industrie sind die Schreibzugriffe sogar sehr gering (Bsp: Banking)
Wunsch der Kunden
• nach EINEM System
• ohne Redundanzen und Inkonsistenzen
Idee/Vision • keine Aggregate • keine Views • alles wird zur Laufzeit errechnet • alle Daten befinden sich im Hauptspeicher / Cache
Fortschritte bei der Hardware
Entwicklung
• Multi-Core Architektur mit bis zu 8 x 28 Core CPU per Blade • Paralle Verarbeitung über Blades hinweg • Blade Server Preis schon unter 50.000€ • Bis zu 24 TB RAM pro Board • Durchsatz > 100 GB/s (Skylake SP, Xeon 8180M, 8-socket) • Kosten / Performance Verhältnis extrem stark fallend • Kopierzeit von 5GB/s mit Infiniband
Blade Server
Blades nutzen eigene Platine mit Mikroprozessor, Arbeisspeicher und
Plattenspeicher
• Zusätzlicher Plattenspeicher kann über SAN oder NAS angedockt werden
• Lüftung nicht zentral sondern über Rückwand
Infiniband
• Bidirektionaler serielles Bus System • Latenzarme Datenübertragung (< 2µs) • Kann Hauptspeicher mehrerer Cores miteinander verknüpfen • Übertragung bis 2,5 GB/s
ermöglicht verteilten Hauptspeicher Zugriff
und Tabellen können somit über
Knoten verteilt werden
Partitionierung von Tabellen
• Parallele Ausnutzung mehrerer Core CPUs, die auf ein Shared Memory
zugreifen, erhöht Verarbeitungsgeschwindigkeit signifikant (→ Blade Server)
• Partitionierung legt Methode fest nach der die Daten verteilt werden und
unabhängige und distinkte Teile
• Kenntnis der Anfrage ist notwendig
Partitionierungsarten
Vertikale Partitionierung
• Aufteilung der Tabelle entlang einer Spalte in Attributgruppen
• Verbindung über Primärschlüssel
Bereichspartitionierung • Auftrennung der Tupel in Bereiche z.B. o In 5 Bereiche nach Kontinent o In 200 Bereiche nach Land o In 5 Bereiche nach Geburtstag: < 1925 < 1950 < 1975 < 2000 < 2025
Hash Partitionierung • Wähle ein Attribut als Hash Kriterium • Lege Anzahl bits fest für Partitionierung (Bsp: 3 bits für 8 Partitionen) • Verteile die Daten gleichmäßig
Applikations Partitionierung • Wähle Kriterien aus der Applikation zur Verteilung • Beispiele: • Bestellzeitraum • Versionen eines Artikels • ....
Datenkompression im Kontext von In Memory Datenbanken und Column Stores
• Für Attributvektoren o Prefix Verschlüsselung o Run Length Verschlüsselung o Cluster Verschlüsselung o Sparse Verschlüsselung o Indirekte Verschlüsselung • Für Dictionary o Delta Kompression o Sortierte Arrays
Prefix Komprimierung
Ersparnis wenn eine Spalte mit einer langen Reihe desselben Wertes beginnt
oder
• ein bestimmter Wert kommt sehr häufig vor und die anderen Werte seltener
• Wert wird nur einmal gespeichert inkl. der Anzahl der Vorkommen
• Voraussetzung: Tabelle sortiert nach Spalte
• Direkter oder nur indirekter Zugriff möglich? → Direkt!
Run Length Komprimierung
Ersetze Sequenz desselben Wertes mit einer einzelnen Instanz des Wertes
und
o Der Anzahl des Auftretens
o Der Startposition
• Direkter oder nur indirekter Zugriff möglich? → Direkt
Cluster Komprimierung
Attributvektor wird aufgeteilt in N Blöcke gleicher Größe (z.B. 512 Byte)
• Wenn das Cluster immer nur einen Wert enthält, erscheint der Wert nur
einmal
• Wenn das Cluster unterschiedliche Werte enthält, werden diese 1:1 dort
abgelgt
• Ein Bitvektor zeigt an, ob Fall 1 oder Fall 2
• Direkter oder nur indirekter Zugriff möglich? → Indirekt, nur über Bitvektor
möglich!
Verstreute (Sparse) Komprimierung
• Attributvektor wird nach häufigstem Wert durchsucht
• Ein Bitvektor zeigt an an welcher Stelle der Wert entfernt wurde
• Direkter oder nur indirekter Zugriff möglich? → Indirekt, nur über Bitvektor
möglich!
Indirekte Komprimierung
AV ist partitioniert in N Blöcke der Größe S (z.B. 512)
• Wenn der Block viele verschiedene Einträge enthält → keine Aktion
• Wenn Block wenige unterschiedliche Einträge enthält → Block wird mit
Dictionary Encoding komprimiert
• Direkter oder nur indirekter Zugriff möglich? → Direkt!
Delta Komprimierung
Für Dictionary Tabelle
• Macht Sinn bei Sortierung
• Blockweise Komprimierung