Aufgabe 06 - IMDB Import
Aufgabe 06 - IMDB Import
Abschnitt betitelt „Aufgabe 06 - IMDB Import“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung werden die echten, großen IMDB-Rohdaten analysiert, in ein PostgreSQL-Schema überführt und mit COPY importiert (siehe Kapitel 3 - Performance). An echten Datenmengen wird spürbar, warum Struktur und später Indizes zählen. Im Expertenteil kommen anspruchsvolle Analyseabfragen dazu.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Ein lauffähiger PostgreSQL-Server (aus der 3. Klasse).
- Die IMDB-Datensätze von imdb.com/interfaces (TSV, tab-separiert, fehlende Werte als
\N). psqlmit aktivierbarer Laufzeitmessung (\timing).
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie analysieren die Struktur unbekannter Rohdaten.
- Sie entwerfen ein Schema mit passenden Datentypen und Schlüsseln.
- Sie importieren große TSV-Dateien mit
COPYund kontrollieren die Vollständigkeit. - Sie formulieren Analyseabfragen und messen ihre Laufzeit.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: Daten herunterladen und sichten (Teil A).
- Reorganisation und Transfer: ein Schema entwerfen und befüllen (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: anspruchsvolle Auswertungen entwickeln und messen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Teil A - Datenanalyse
Abschnitt betitelt „Teil A - Datenanalyse“- Die IMDB-Dateien herunterladen und entpacken.
- Von jeder Datei (z. B.
name.basics.tsv,title.basics.tsv,title.ratings.tsv,title.principals.tsv) die ersten 10 Zeilen betrachten und Struktur, Format und Besonderheiten (Trennzeichen,\Nfür fehlende Werte, Mehrfachwerte in einer Spalte) beschreiben.
Teil B - Schema entwerfen
Abschnitt betitelt „Teil B - Schema entwerfen“- Eine Datenbank
imdbanlegen und Tabellen entwerfen, die die Dateien widerspiegeln, mit passenden Datentypen (INTEGER,BOOLEAN,TEXT,REAL) und sinnvollen Primär- und Fremdschlüsseln (z. B.tconst,nconst).
Teil C - Import und Basisabfragen
Abschnitt betitelt „Teil C - Import und Basisabfragen“- Die TSV-Dateien mit
COPYbzw.\copyimportieren (DELIMITER E'\t',NULL '\N'). Die Anzahl importierter Zeilen mit der Zeilenzahl der Quelldateien vergleichen, damit keine Datensätze fehlen. \timing onaktivieren und die Laufzeit dieser Abfragen messen: Wie viele Produktionen gibt es? Wie viele Personen? Welche Tätigkeitskategorien gibt es intitle_principals? Wie viele Filme haben mehr als 100.000 Wertungen?
Teil D - Expertenteil: Anspruchsvolle Analysen und die Kostenfrage
Abschnitt betitelt „Teil D - Expertenteil: Anspruchsvolle Analysen und die Kostenfrage“- Bestenlisten: Die 10 besten Produktionen aller Zeiten (mit mehr als 100.000 Wertungen) samt Produktionsjahr; danach die 10 besten Filme (
titleType = 'movie') mit mehr als 100.000 Wertungen, und wie viele davon nach dem Jahr 2000 entstanden sind. - Person über den Namen finden: Eine Lieblingsschauspielerin oder einen Lieblingsschauspieler über den Namen (nicht über die ID) suchen und die Laufzeit messen. Dann alle Produktionen dieser Person über
title_principalssamt Kategorie ermitteln, ebenfalls mit Laufzeitmessung. - Tätigkeit über die Zeit: Eine Liste erstellen, die je Jahr die Anzahl der Titel und die Summe der Minuten zeigt, in denen diese Person als Schauspieler mitgewirkt hat (wann war sie am fleißigsten?). Zusätzlich die verschiedenen Tätigkeiten dieser Person zählen (Schauspieler, Regie, Produktion …).
- Kostenfrage: Notieren Sie, welche dieser Abfragen spürbar langsam sind. Begründen Sie in vier bis fünf Sätzen, warum (etwa: Suche über den Namen ohne Index, Joins über Millionen Zeilen), und nennen Sie für mindestens drei Abfragen die Spalten, die man indizieren müsste. Diese Analyse ist die Vorbereitung für Aufgabe 07.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Wie liest
COPYeine tab-separierte Datei mit\Nfür fehlende Werte ein? - Woran erkennt man nach dem Import, dass keine Zeilen verloren gingen?
- Warum ist die Suche einer Person über den Namen ohne Index langsam?
- Welche Spalten sind typische Kandidaten für einen Index in den IMDB-Daten?
- Wozu dient
\timinginpsql?
- Eine Dokumentation mit der Datenanalyse, dem SQL-Schema, allen Abfragen, den Import-Ausgaben (Zeilenzahlen) und den gemessenen Laufzeiten samt der Kostenanalyse aus Teil D.
HTL Villach, 2025-2026,
https://www.htl-villach.at