Aufgabe 07 - IMDB Index Optimierung
Aufgabe 07 - IMDB Index Optimierung
Abschnitt betitelt „Aufgabe 07 - IMDB Index Optimierung“- Datenbankoptimierung durch den Einsatz von Indizes.
- Analyse und Vergleich von Query-Laufzeiten (mit und ohne Indizes).
- Arbeiten mit großen Datensätzen (IMDB) unter PostgreSQL.
Aufgaben
Abschnitt betitelt „Aufgaben“1. Datenanalyse der IMDB-Daten
Abschnitt betitelt „1. Datenanalyse der IMDB-Daten“(Analog zu Aufgabe 1 des vorherigen Aufgabenblatts.)
Rezeption:
- Laden Sie die IMDB-Daten von https://www.imdb.com/interfaces/ herunter.
- Entpacken Sie die
.tsv.gz-Dateien. - Untersuchen Sie die Struktur der Dateien, indem Sie die ersten 10 Zeilen jeder Datei betrachten.
- Beschreiben Sie Format, Besonderheiten und Datenfelder.
2. Initiale Abfragen und Laufzeitmessung (ohne Indizes)
Abschnitt betitelt „2. Initiale Abfragen und Laufzeitmessung (ohne Indizes)“Reproduktion:
(Falls Sie diesen Schritt nicht bereits in Aufgabe 14 erledigt haben.)
- Importieren Sie die Daten mittels PostgreSQL-
COPYoder\copy.
Beispiel:
Abschnitt betitelt „Beispiel:“\copy title_basicsFROM 'C:/imdb/title.basics.tsv'WITH (FORMAT csv, DELIMITER E'\t', HEADER true, NULL '\N');- Stellen Sie sicher, dass keine Datensätze übersprungen werden.
- Aktivieren Sie die Laufzeitmessung in
psql:
\timing onFühren Sie die folgenden Abfragen ohne Indizes aus und messen Sie jeweils die Laufzeit:
- Wie viele Produktionen (Filme, Serien, etc.) gibt es?
- Wie viele Personen sind in den IMDB-Daten registriert?
- Welche verschiedenen Kategorien an Tätigkeiten (
category) gibt es intitle_principals? - Wie viele Produktionen haben mehr als 100.000 Wertungen?
- Was sind die 10 besten Produktionen aller Zeiten, basierend auf Bewertung, mit mehr als 100.000 Wertungen? Wann wurden diese produziert?
- Was sind die 10 besten Filme aller Zeiten (titleType=‘movie’) mit mehr als 100.000 Wertungen? Wie viele davon wurden nach dem Jahr 2000 produziert?
- Finden Sie Ihren Lieblingsschauspieler bzw. Ihre Lieblingsschauspielerin nach Name und messen Sie die Laufzeit.
- Welche Produktionen hat diese Person gemacht? (Via
title_principals+ Filter aufcategory.) - In welchen Filmen, Kurzfilmen, Serien oder Episoden war diese Person beteiligt?
- Anzahl der Titel und Summe der Laufzeiten pro Jahr, in denen diese Person als Schauspieler (
category='actor' OR 'actress') beteiligt war. - Liste der verschiedenen Tätigkeiten dieser Person (z. B. Schauspieler, Regisseur, Produzent).
Dokumentieren Sie alle Laufzeiten.
3. Entwurf und Erstellung sinnvoller Indizes
Abschnitt betitelt „3. Entwurf und Erstellung sinnvoller Indizes“Analyse & Produktion:
Überlegen Sie, welche Spalten Sie indizieren sollten, um die oben genannten Abfragen zu beschleunigen.
Typische Kandidaten (zur Orientierung):
-
title_ratings(numVotes) -
title_ratings(averageRating) -
title_basics(titleType) -
title_basics(startYear) -
name_basics(primaryName) -
title_principals(nconst) -
title_principals(tconst) -
Kombinationen wie:
CREATE INDEX idx_title_ratings_votes_ratingON title_ratings (numVotes DESC, averageRating DESC);
Erstellen Sie die von Ihnen geplanten Indizes.
4. Optimierte Abfragen und Laufzeitmessung (mit Indizes)
Abschnitt betitelt „4. Optimierte Abfragen und Laufzeitmessung (mit Indizes)“Analyse:
- Wiederholen Sie alle Abfragen aus Schritt 2, diesmal mit Ihren Indizes.
- Messen Sie wie zuvor die Laufzeiten.
- Dokumentieren Sie diese Ergebnisse.
5. Vergleich und Speed-Up-Berechnung
Abschnitt betitelt „5. Vergleich und Speed-Up-Berechnung“Analyse:
Vergleichen Sie die Laufzeiten ohne vs. mit Indizes.
Verwenden Sie:
Speed-Up = (Laufzeit ohne Indizes) / (Laufzeit mit Indizes)Erstellen Sie eine Tabelle oder ein Diagramm:
| Abfrage | Zeit ohne Indizes | Zeit mit Indizes | Speed-Up |
|---|---|---|---|
| z. B. #4 | 12,8 s | 0,9 s | 14,22× |
6. Reflexion
Abschnitt betitelt „6. Reflexion“Evaluation:
- Welche Abfragen wurden stark schneller?
- Bei welchen Abfragen gab es kaum Verbesserungen, und warum?
- Welche Arten von Indizes sind für große reale Datenbanken sinnvoll?
- Welche würden Sie im Rückblick nicht setzen?
Ihre Dokumentation soll enthalten:
- Analyse der IMDB-Daten und Begründung Ihrer Indexwahl.
- Alle gemessenen Laufzeiten (mit und ohne Indizes).
- Berechneter Speed-Up pro Abfrage.
- Kurze Reflexion zur Effektivität der Indizes.
HTL Villach
INSY 2024-2025
Dipl.-Ing. Oliver Maurhart
[email protected]