Datenbanken
Daten liegen selten als Datei bereit. Sie kommen aus einem System, das sie laufend fortschreibt, und die Auswertung beginnt mit der Frage, wie man sie von dort holt, ohne alles zu laden.
Der Weg durch diesen Bereich: Zuerst die Datenmodellierung, weil sie erklärt, warum Daten auf mehrere Tabellen verteilt sind. Dann SQL als Sprache, die für alle relationalen Systeme gilt, und der Zugriff aus R und Python. Danach die einzelnen Systeme mit ihren Eigenheiten.
Welches System wann
| Situation | Passend | Warum |
|---|---|---|
| Auswertung auf dem eigenen Rechner, Daten als Datei | DuckDB | Fragt CSV und Parquet direkt ab, spaltenweise und schnell |
| Kleine Datenbank ohne Server, auch zum Weitergeben | SQLite | Eine Datei, keine Installation, überall lesbar |
| Mehrere Personen oder Programme schreiben gleichzeitig | PostgreSQL | Transaktionen, Rechte, erzwungene Konsistenz |
| Bestehende Anwendung, oft im Web | MySQL und MariaDB | Sehr verbreitet, meist als Quellsystem vorgefunden |
| Struktur variiert je Datensatz, verschachtelte Objekte | MongoDB | Dokumente ohne festes Schema |
| Nur einzelne Felder sind halbstrukturiert | PostgreSQL | JSON als Typ, ohne das relationale Modell aufzugeben |
Zwei Fragen genügen für die meisten Fälle. Erstens: Schreiben mehrere gleichzeitig? Wenn ja, braucht es einen Server. Zweitens: Geht es um viele einzelne Zugriffe oder um Auswertungen über viele Zeilen? Ersteres ist der Fall für die zeilenweise organisierten Systeme, Letzteres für DuckDB.
Was hier an SQL geübt wird, gilt in allen relationalen Systemen. Die Unterschiede liegen in Details: Datums- und Zeitfunktionen, Zeichensätze, Fensterfunktionen, und wie streng Typen genommen werden. Die Systemseiten nennen jeweils die Eigenheit, über die man in der Praxis stolpert.
Datenmodellierung
Relationales Modell, Schlüssel, Beziehungen und Normalisierung.
SQL
Abfragen, Joins, Aggregation und Unterabfragen.
Datenbankzugriff
Aus R und Python verbinden, abfragen, schreiben und sauber schliessen.
SQLite
Die Datenbank als einzelne Datei: ohne Server, ideal für Auswertungen und Prototypen.
DuckDB
SQL für analytische Auswertungen im eigenen Prozess, direkt auf Dateien.
PostgreSQL
Der Standard unter den offenen Serverdatenbanken, mit Fensterfunktionen, JSON und Erweiterungen.
MySQL und MariaDB
Weit verbreitete Serverdatenbanken, ihre Eigenheiten und der Zugriff aus R und Python.
MongoDB
Dokumentdatenbank ohne festes Schema: wann sie passt und wie man sie abfragt.
Fragen zu Datenbanken
Übergreifende Fragen zur Wahl des Systems und zu Eigenheiten, die zwischen den Systemen verschieden sind.
Die Fragen zu Datenbanken vergleichen die Systeme untereinander. Die Grundfragen zu SQL stehen in den Fragen zum Bereich Daten. Was vor der Datenbank passiert, also Import, Aufbereitung und Qualitätsprüfung, steht im Bereich Daten.