Zum Inhalt springen

Aufgabe 06 - IMDB Import

Zu Zen-Modus wechseln
  • Datenanalyse und -verarbeitung.
  • Import von Daten in eine PostgreSQL-Datenbank.
  • Analyse von großen Datensätzen und Optimierung von Datenbankabfragen.

Rezeption:

  • Laden Sie die IMDB-Daten von https://www.imdb.com/interfaces/ herunter.
  • Entpacken Sie die heruntergeladenen Dateien und machen Sie sich mit der Struktur der Daten vertraut. Analysieren Sie die ersten 10 Zeilen jeder Datei und beschreiben Sie die Struktur und das Format der enthaltenen Daten.

Organisation:

  • Erstellen Sie eine neue Datenbank mit dem Namen imdb in PostgreSQL und entwerfen Sie Tabellen, die die heruntergeladenen Daten widerspiegeln. Nutzen Sie dazu das Format der verschiedenen Dateien (z. B. name.basics.tsv, title.basics.tsv, etc.).
  • Achten Sie darauf, dass die Tabellen sinnvoll miteinander verknüpft sind (Primär-/Fremdschlüssel) und die passenden Datentypen für jede Spalte verwendet werden (z. B. INTEGER, BOOLEAN, TEXT, DATE, REAL).

Produktion:

  • Verwenden Sie den Befehl COPY (bzw. \copy in psql), um die entpackten TSV-Daten in die PostgreSQL-Tabellen zu laden.
  • Hinweise:
    • Die IMDB-Dateien sind in der Regel TAB-separiert (\t).
    • Fehlende Werte werden meist als \N dargestellt (entsprechend in COPY als NULL '\N' angeben).
    • Je nach Umgebung müssen Pfade und Berechtigungen angepasst werden (z. B. Dateirechte, Zugriff des Datenbankservers auf das Dateisystem).
  • Stellen Sie sicher, dass alle Datensätze geladen werden und keine Datensätze übersprungen werden. Kontrollieren Sie die Ausgaben des COPY-Befehls (Anzahl der importierten Zeilen) und vergleichen Sie diese mit der Zeilenanzahl der Quelldateien.

Messen Sie immer die Laufzeit der Queries (z. B. mit \timing in psql) und beantworten Sie die folgenden Fragen:

  1. Wie viele Produktionen (Filme, Serien, etc.) gibt es?
  2. Wie viele Personen sind in den IMDB-Daten registriert?
  3. Welche verschiedenen Kategorien an Aufgaben gibt es für eine Produktion (z. B. Schauspieler, Regisseur, Produzent)?
  4. Wie viele Filme gibt es mit mehr als 100.000 Wertungen?
  5. Was sind die 10 besten Produktionen “aller Zeiten” (basierend auf Bewertungen) mit mehr als 100.000 Wertungen? Wann wurden diese produziert?
  6. Was sind die 10 besten Filme “aller Zeiten” mit mehr als 100.000 Wertungen? Wann wurden diese produziert? Wie viele davon wurden nach dem Jahr 2000 produziert?
  7. Finden Sie Ihren Lieblingsschauspieler bzw. Ihre Lieblingsschauspielerin in der IMDB-Datenbank anhand des Namens und messen Sie die Laufzeit der Abfrage.

Messen Sie immer die Laufzeit der Queries und beantworten Sie die folgenden Fragen:

  1. Welche Produktionen hat Ihr Lieblingsschauspieler bzw. Ihre Lieblingsschauspielerin in der Rolle des Schauspielers oder einer anderen Kategorie gemacht? (Benutzen Sie title_principals und category). Messen Sie die Laufzeit dieser Query. (Anm.: verwenden Sie dabei den Namen Ihres Schauspielers oder Ihrer Schauspielerin und nicht die Id).
  2. Nennen Sie alle Filme, Kurzfilme, TV-Serien oder TV-Episoden, in denen Ihr Lieblingsschauspieler bzw. Ihre Lieblingsschauspielerin mitgewirkt hat. Messen Sie auch hier die Laufzeit der Query. (Anm.: verwenden Sie dabei den Namen Ihres Schauspielers oder Ihrer Schauspielerin und nicht die Id).
  3. Erstellen Sie eine Liste der Anzahl der Titel und die Summe der Minuten pro Jahr, in denen Ihr Lieblingsschauspieler bzw. Ihre Lieblingsschauspielerin als Schauspieler mitgewirkt hat (d. h. wann war er/sie am fleißigsten?). Messen Sie die Laufzeit dieser Query. (Anm.: verwenden Sie dabei den Namen Ihres Schauspielers oder Ihrer Schauspielerin und nicht die Id).
  4. Erstellen Sie eine Liste der unterschiedlichen Tätigkeiten Ihres Lieblingsschauspielers bzw. Ihrer Lieblingsschauspielerin, z. B. wie oft war er Schauspieler, Regisseur, Produzent, usw. Messen Sie auch hier die Laufzeit der Query. (Anm.: verwenden Sie dabei den Namen Ihres Schauspielers oder Ihrer Schauspielerin und nicht die Id).

  • Dokumentation:
    • Analyse der IMDB-Daten und SQL-Schema der Tabellen (PostgreSQL).
    • Alle verwendeten Abfragen zur Analyse.
    • Ergebnisse des Datenimports (z. B. Logs, COPY-Ausgaben oder Screenshots).
    • Laufzeiten der Queries (z. B. Screenshots aus psql mit aktivierter \timing-Option oder zusammengefasste Tabelle).

HTL Villach,
INSY 2024-2025,
Dipl.-Ing. Oliver Maurhart
[email protected]