Der Speicherort für Bilddaten
Dienstag, Januar 18th, 2011Heute möchte ich mich mit der Frage beschäftigen, wo eine Bildverwaltungssoftware die Bilddaten abspeichert. Prinzipiell gibt es 2 Möglichkeiten: die Bilder können mit den Metadaten zusammen in der Datenbank gespeichert werden. oder es kann in der Datenbank nur eine Referenz, bestehend aus Pfad+Dateiname des Bildes, abgelegt werden. Beide Methoden haben ihre Vorteile, aber auch Nachteile. Da keine der Methoden frei von Nachteilen ist, kann man sich darüber streiten, welche Methode nun die bessere ist. Schlussendlich ist es also eine Entscheidung des Anwenders, welche Methode er bevorzugt.
Bevor ich auf die Vor- und Nachteile eingehe, möchte ich kurz schildern, welches Konzept das neue BVASystem verfolgt bzw. verfolgen wird. Es werden im BVASystem pro Datensatz 3 Bilder abgespeichert. Als erstes wäre da das Thumbnail, welches in der Bildliste angezeigt wird. Standardmäßig hat das Thumbnail eine maximale Bildhöhe von 200 Pixel. Weiterhin wird ein Vorschaubild gespeichert, welches angezeigt wird, wenn der Anwender das Bild im angepassten Zoommodus betrachtet. Es hat standardmäßig eine maximale Höhe von 800 Bildpunkten und lässt sich damit auch auf älteren Rechnern schnell laden und anzeigen. Sowohl das Thumbnail, als auch das Vorschaubild werden in der Datenbank gespeichert. Als drittes wird natürlich die Originalbilddatei gespeichert, welche angezeigt werden soll, sobald der Anwender den angepassten Zoommodus verlässt. Aktuell ist es so, das auch das Originalbild in der Datenbank abgelegt wird. Die Datenbankstruktur ist aber so angelegt, das anstelle des Bildes auch eine Referenz gespeichert werden kann. Der Anwender soll sich später einmal in den Optionen aussuchen können, ob das Originalbild in der Datenbank oder als Referenz gespeichert werden soll.
Ich habe mich zu diesem Konzept entschieden, da ich mit dem Programm meine eigenen Bilder im Heimnetzwerk verwalte. Da ist es einfacher, wenn die Bilder zentral auf dem Server gespeichert werden, damit alle Rechner darauf zugreifen können. Durch meine kurze Begründung für das Konzept bin ich nun aber auch schon mittendrin bei den Vor- und Nachteilen der beiden Möglichkeiten.
Speicherung der Bilder in der Datenbank
Für die Speicherung der Bilder in der Datenbank spricht, das das Programm damit komplett netzwerkfähig wird. Es macht keinen Unterschied, ob der Datenbankserver lokal, im Heimnetzwerk oder gar im Internet liegt. Es kann immer auf die gleiche Art und Weise auf die Bilder zugegriffen werden. Ebenfalls vorteilhaft ist, das die eingestellten Daten zentral an einer Stelle gespeichert sind. Dadurch können die Daten leicht gesichert und bei einem Datenverlust auch leicht wiederhergestellt werden. Als dritter Vorteil fällt mir ein, das man das Berechtigungssystem der Datenbank nutzen kann, um unerlaubten Zugriff auf die Bilddaten zu verhindern. Bei einer lokalen Installation wird man dies wohl nicht benötigen, aber im Netzwerkbetrieb mit mehreren Nutzern kann dies schon von Bedeutung sein.
Nachteilig an der Speicherung der Bilder in der Datenbank ist, das die Bilder erst wieder exportiert werden müssen, wenn man sie außerhalb der Bildverwaltung benötigt. Will man die Bilder beispielsweise an ein Fotolabor senden, so wird dies nicht auf direktem Wege funktionieren. Zuerst müssen die ausgewählten Bilder in ein temporäres Verzeichnis auf der Festplatte kopiert werden. Von dort können sie dann ans Fotolabor gesendet werden. Einige sehen dies aber auch als Vorteil, den die Originalbilddateien sind in der Datenbank dadurch sicher vor ungewollten Änderungen. Es geht ganz schnell, das man beispielsweise beim Drehen eines Bildes mit einem Bildbearbeitungsprogramm plötzlich den EXIF-Header des Bildes, der die Meta-Daten wie Aufnahmedatum oder Aufnahmeort enthält, verliert.
Von der Performance her ist die Speicherung der Bilddaten in der Datenbank langsamer als auf dem Dateisystem. Dies erklärt sich dadurch, das kein direkter Zugriff vom Programm auf die Bilddatei erfolgt. Der Zugriff erfolgt zweistufig: Das Programm stellt eine Anfrage an die Datenbank und diese liest dann die Bilddatei von der Festplatte. Häufig angezeigte Bilder wird die Datenbank im Arbeitsspeicher cachen und damit schneller ausliefern als das Dateisystem.
Als größten Nachteil für die Datenbankspeicherung sehe ich die starke Abhängigkeit von der Verwaltungssoftware. Wenn die Software von heut auf morgen nicht mehr weiterentwickelt wird, hat der Anwender ein Problem. Neuer Rechner, neues Betriebssystem und schon nützt einem nichtmal mehr ein Datenbackup, weil die alte Software einfach nicht mehr läuft. Man kann zwar mit Hilfe von Tools der Datenbankhersteller ebenfalls auf die Datenbank zugreifen, aber dafür benötigt man schon einiges an Fachwissen. Außerdem ist die Art von Datenzugriff nicht wirklich komfortabel.
Speicherung von Bildreferenzen
Bei der Speicherung von Bildreferenzen ist die Sache genau anders herum. Der Anwender behält weiterhin vollen Zugriff auf seine Bilder. Die mit der Verwaltungssoftware erstellten Bildbeschreibungen, speichert das Programm idealerweise direkt im Bild ab. Sollte die Software nicht mehr weiterentwickelt werden, oder der Anwender hat ein besseres Programm gefunden, so importiert er seine Bilder einfach mit samt den Bildbeschreibungen in das neue Programm. Auch kann der Anwender sofort auf seine Bilddaten zugreifen, wenn er sie an ein Fotolabor schicken möchte.
Der einfache Zugriff auf die Bilder ist aber auch der größte Nachteil der Bildreferenzen. Der Anwender kann zu jeder Zeit Bilder löschen, verschieben oder umbenennen. In der Datenbank der Verwaltungssoftware entstehen dadurch Datensätze, die keinem Bild mehr zugeordnet werden können. Im schlimsten Fall ist der Sinn der Verwaltungssoftware verfehlt, da der Anwender sein gesuchtes Bild nicht wiederfindet, weil er es vor ein paar Monaten in ein anderes Verzeichnis verschoben hat ohne dabei an die Bildverwaltung zu denken.
Eine Netzwerkfähigkeit ist mit Bildreferenzen nur bedingt erreichbar. Im lokalen Netzwerk kann man vielleicht noch mit Netzwerklaufwerken arbeiten um einen Zugriff von mehreren Rechnern aus zu gewährleisten. An der Stelle wird es aber bereits schwierig, ungewünschte Zugriffe auf die Bilder zu verbieten.
Fazit
Wie bereits oben gesagt, war für mich die Netzwerkfähigkeit der ausschlaggebende Punkt mich für die Speicherung der Bilder in der Datenbank zu entscheiden. Wie sieht es bei euch aus? Speichert ihr die Bilder in der Datenbank oder nutzt ihr nur Bildreferenzen?