Hallo liebe Community!
Da dieses mein erster Beitrag in diesem Forum ist, möchte ich mich kurz vorstellen.
Mein Name ist Norman und ich studieren Angewandte Informatik an der FH-Hannover im 5. Semester.
Teil dieses (und des nächsten) Semesters ist ein Praxis-Projekt. Ich und acht Kommilitonen habe nun dass Vergnügen, eine “Multimedia Datenbank” (multimedia beschreibt in diesem Fall Bild-Dateien) zu entwickeln.
Wir befinden uns zur Zeit in der Analyse-Phase, haben uns aber bereits für PostgreSQL entschieden.
Der nächste Schritt für das Datenbank-Team ist es nun, ein sinnvolles Datenbank Schema zu erarbeiten.
Der erste Prototyp unserer Anwendung soll nur das manuelle taggen und hochladen, sowie eine automatisierte Extraktion von relevanten Metadaten (EXIF-Daten) realisieren.
Wir haben uns bereits Gedanken gemacht, wie die Tabellen zum speichern dieser Daten aussehen könnten.
Table IMAGE_LINK
SERIAL id
VARCHAR external_link (pfad zur bilddatei auf fileserver)
Table TAGS
VARCHAR tag (PRIMARY KEY)
FK image_id[] (alle ids von Bilddateien, die dieses Tag tragen in form eines arrays)
Table METADATA
FK SERIAL image_id
SMALLINT image_width
SMALLINT image_high
… (weitere EXIF-Datent)
Nun brennen mir insbesondere diese Fragen auf der Seele:
-
Ist unser Ansatz mit den Arrays in der TAG-Tabelle sinnvoll? Wir würden natürlich einen INDEX auf die TAG-Spalte legen um eine perfomante Suche nach TAGS möglich zu machen.
-
Wie würdet ihr die Indexierung der METADATA Tabelle handhaben? Jeweils ein Index für jede Spalte? Macht das Sinn?
-
Bis jetzt habe ich immer gelesen dass Binäre Dateien möglichst nicht direkt in der DB abgelegt werden sollen. Als Grund wurden immer Performance-Probleme angegeben.
Ich würde dass gerne einfach so hinnehmen und mit Verweisen auf einen Fileserver arbeiten aber unsere Professorin besteht darauf, die Alternative mit der direkten Speicherung der Bilder in der DB zu testen. Was meint Ihr dazu?
Ich würde mich sehr über Feedback freuen! Im Gegenzug bin ich bereit unsere Fortschritte, Arbeitsergebnisse o.ä. bei Interesse für die Community offenzulegen und anderen somit die Möglichkeit zu geben, aus unseren Fehlern und Problemen zu lernen.
Freundliche Grüße
Norman