Column-Store Database System
Row vs. Column Store
- Im Gegensatz zu Row-Stores werden bei Column-Store die Daten Spalte für Spalte abgelegt
- Motivation: Tabellen mit vielen Spalten, queries selektieren meist nur einige Attribute. Dann ist query-store I/O effizienter
- Nachteil: Daten schreiben ist langsam
- Da gleiche Daten zusammen in einer Spalte sind, ist Compression und Bitmap Encoding effizienter
- Vor allem, wenn Datenbereich klein ist
Materialization
- Das Erstellen der Tupel aus den Columns während einer Query
Early Materialization
- Gleich zu Beginn Columns lesen und zu Tuples zusammensetzen
- Noch bevor einer Filterung (
WHERE
) - Es müssen alle Tuples zusammengesetzt werden, braucht viel Memory
- Langsam für Filter, Aggregationen, etc.
- Aber schneller als Late Materialization bei Joins
Late Materialization
- Möglichst lange warten, bis Tupel zusammengesetzt werden
- Filter werden auf der entsprechenden Columns angewendet
- Erst ganz am Schluss werden die Tupels zusammen gesetzt
- Schnell für Queries ohne Joins
Note
TODO
C-Store Architecture
In-Memory Data Warehouse
- Ziel: Möglichst wenig I/O, nur die nötigsten Daten laden