Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Zeilen- und spaltenorientierte Datenbanken

Nach dieser Lektion: Ich kann erklären, warum eine analytische Abfrage eine Tabelle anders liest als die Suche nach einer einzelnen Zeile.

Lektion, 45 Min.Keine Befehle

Was ist eine analytische Abfrage?

Eine analytische Abfrage fasst viele Zeilen einer Tabelle zu wenigen Zahlen zusammen, zum Beispiel zum Umsatz je Filiale.

Sie liest nur wenige Spalten, aber sehr viele Zeilen. Genau dafür sind spaltenorientierte Datenbanken wie DuckDB gebaut.

Heute sehen Sie, warum das schneller ist.

Am Ende dieser Lektion

Notiz

Ich kann erklären, warum eine analytische Abfrage eine Tabelle anders liest als die Suche nach einer einzelnen Zeile.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Analytische Abfragefasst viele Zeilen zu wenigen Werten zusammen
Zeilenspeicherlegt alle Werte einer Zeile nebeneinander ab
Spaltenspeicherlegt alle Werte einer Spalte nebeneinander ab
Aggregatfunktionmacht aus vielen Werten einen einzigensum(menge)
DuckDBeine spaltenorientierte Datenbank für Analysen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Wie legt eine Datenbank eine Tabelle ab?

Eine Tabelle sieht aus wie ein Raster. Im Speicher liegen die Werte aber in einer langen Reihe.

Ein Zeilenspeicher legt die Werte Zeile für Zeile ab: erst alles zur ersten Zeile, dann alles zur zweiten. Ein Spaltenspeicher legt sie Spalte für Spalte ab: erst alle Mengen, dann alle Filialen.

Beide halten dieselben Daten. Nur die Reihenfolge ist anders.

Dieselben drei Verkäufe, zwei Reihenfolgen

SpeicherartSo liegen die Werte hintereinander
Zeilenspeicher12, Berlin, Kaffee, dann 8, Hamburg, Kaffee, dann 15, Muenchen, Kaffee
Spaltenspeicher12, 8, 15, dann Berlin, Hamburg, Muenchen, dann Kaffee, Kaffee, Kaffee

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Suche braucht Zeilen, Analyse braucht Spalten

Eine Suche fragt: Zeige mir Verkauf 4. Sie braucht alle Werte einer Zeile. Ein Zeilenspeicher liefert sie in einem Stück.

Eine Analyse fragt: Wie viel wurde insgesamt verkauft? Sie braucht eine Spalte aus allen Zeilen. Ein Spaltenspeicher liest nur diese Spalte und lässt den Rest liegen.

Hat eine Tabelle 20 Spalten und die Abfrage nennt zwei, muss grob nur ein Zehntel der Daten gelesen werden.

Probieren Sie es: eine Spalte summieren

Code: duckdb
-- Eine Spalte, alle Zeilen: so liest eine Analyse.
select sum(menge) as gesamtmenge
from verkaeufe;
-- Ersetzen Sie sum durch avg und vergleichen Sie.

Eine Aggregatfunktion macht aus vielen Werten einen

Die Werkzeuge einer Analyse heißen Aggregatfunktionen. count(*) zählt Zeilen. sum addiert, avg bildet den Durchschnitt, min und max finden den kleinsten und den größten Wert.

Allein fasst eine Aggregatfunktion die ganze Tabelle zusammen. Mit group by bekommen Sie eine Zusammenfassung je Wert einer Spalte.

Ein Spaltenspeicher liest dafür nur die Spalten, die in der Abfrage stehen.

Probieren Sie es: je Filiale verdichten

Code: duckdb
-- Je Filiale eine Zeile, aus allen Zeilen verdichtet.
select filiale, count(*) as verkaeufe, sum(menge) as gesamtmenge
from verkaeufe
group by filiale
order by filiale;
-- Fügen Sie die Spalte avg(betrag_euro) als schnitt_euro hinzu.

Ein häufiger Fehler

Warnung

Viele glauben, ein Spaltenspeicher sei immer schneller. Das stimmt nicht. Für die ganze Zeile eines Verkaufs ist ein Zeilenspeicher oft besser. Wählen Sie den Spaltenspeicher, wenn Abfragen viele Zeilen und wenige Spalten lesen.

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.