Bilder speichern, wo?

Hallo,

wir verwenden PosgreSQL 8.1 Datenbank in einem Projekt. Jetzt wird die Anwendung so erweitert, dass die Bilder auch gespeichert und verwaltet werden müssen.
Die Frage ist, wie realisiert man das am Besten?
Ich habe 2 Möglichkeiten gefunden:
1)Die Image Dateien werden in der Datenbank mit Hilfe der Large Object Funktionen gespeichert.
2)Die Dateien werden in einem Verzeichnis gespeichert, in der Datenbank werden der Name und das Link zur Datei abgelegt.

Ich danke voraus,

Grüße
SIJ

  1. halten viele fuer “sexy” - wobei ich für mich als einziges Argument “PRO” das vereinfachte Backup ausmachen konnte (man hat halt alle Daten dabei) … darüber hinaus bringt mir das Ablegen der Bild-Daten in der DB keine Vorteile - abgesehen von evtl. Thumbnails.

(Ich gehe mal davon aus, dass du beliebige Bild-Daten meinst)

Ein RDBMS ist schier für sowas einfach nicht gedacht - ausserdem kann man eh nicht sinnvoll mit den Bild-Daten operieren (suchen sortieren etc) … Wenn Du natürlich deine DB um solche Funktionen erweitern möchtest - was mit PG prinzipiell geht, macht es wieder Sinn!

  1. Wäre die einfachste Lösung - aber nicht die zeitgemäßeste. Der gravierenste Nachteil eben - separates Backup. Änderungen an den Daten gehen völlig an der DB vorbei (das kann man aber einplanen und entweder akzeptieren bzw. lösen/verhindern)

Der Nachteil wäre aber auch Vorteil - vielleicht ist fuer die DB ja ohnehin nur notwendig zu wissen “WO” das Bild liegt. Wie du das Filesystem dafür dann Organisierst gehört ja auch zum Softwaresystem dazu.

Man kann das so pauschal nicht beantworten

Dafür gibt es keine gute Lösung. symbiont hat die wesentlichen Argumente schon aufgezählt.

Was genau ist denn das für eine Anwendung und habt ihr schon mal überlegt, ev. eine Dokumentenbasierte Datenbank einzusetzen?

Hallo,

Danke für die schnelle Antwort. Im Projekt sollen die Bilder für die Artikeln und noch die Unterschriften bei den Buchungen gespeichert werden. Das sind keine großen Bilder.

Die erste Variante gefehlt mir auch aber ich fürchte, dass die DB damit aufgeblasen wird und die Perfomence der DB verloren gehen und DB langsamer wird.
Paar Fragen habe ich noch:

  1. WelcheDokumentenbasierte Datenbanken gibt es? Wo kann ich darüber lesen?
  2. Wie wird ein BLOB mit Lagre Object Funktionen in PostgreSQL gespeichert? In einer einzelnen Datei?


    Danke

SIJ

Diese Art Bilder würde ich zu Thumbnails zählen - selbst “Web-Taugliche” Bilder fallen (für mich) unter diese Kategorie. Hier darfst du auch pragmatisch sein und die Bild-Daten durchaus in der DB speichern -> das macht das implementieren des Frontends beim anzeigen Einfacher.

Du solltest auch ueberlegen, ob nicht doch noch weitere Bilder oder andere Dokumente an den Artikel “gehangen” werden koennten. Dann empfiehlt es sich allerdings diese in ein DMS zu stopfen …

Es spricht absolut NICHTs dagegen beide Ansätze zu implementieren - je nach anwendungsfall im Syschdem nimmst entweder das eine (thumbs) oder das ander (DMS)

Welche > Dokumentenbasierte Datenbanken gibt es? Wo kann ich darüber lesen?

Welcome to Apache Jackrabbit

Content Repository for Java Technology API – Wikipedia

(gib auch ne API fuer PHP usw. - soweit ich weiss)

[quote]2) Wie wird ein BLOB mit Lagre Object Funktionen in PostgreSQL gespeichert? In einer einzelnen Datei? [/quote]ads - ünernehmen Sie :slight_smile:

Ich werfe mal ein Stück TOAST in den Raum:

PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: TOAST

Andreas

Ich packe mal einen Vortrag hinzu, der eine Auswahlhilfe für Datenbanken stellt:

Welche Datenbank?

Hallo,

In deine Folie (“Speichern binärer Daten- Datenbanken”) gibt es zwei Listen von Datenbanken. In der ersten Liste sind die Dokumentenbasierten Datenbanken. Wofür ist die zweite Liste?


Grüße

SIJ

Die erste Liste sind Dokumentenbasierte Datenbanken, die sich so etwas also zur Hausaufgabe gemacht haben. Die zweite Liste sind Datenbanken, die so etwas auch können - also im Prinzip Datenbanken, die mit binären Dateien umgehen können.

Disclaimer: Diese Liste erhebt keinen Anspruch auf Vollständigkeit, aber dürfte einen guten Überblick verschaffen.

Hallo.

Ich stehe jetzt auch vor dem “Problem”, Bilder in der DB abzuspeichern.

Wie mein Vorgänger schon schrieb, entscheide ich mich wohl für die zweite Methode:
“2) Die Dateien werden in einem Verzeichnis gespeichert, in der Datenbank werden der Name und das Link zur Datei abgelegt.”
Wie gehe ich nun am Besten dabei vor?
Bräuchte mal eine Step-by-Step Anleitung. Ich programmiere in Visual Basic mit ASPX-Seiten.

Gruß

Naja, grob gesagt Bilder hochladen, und in einem bestimmten Pfad speichern. Diese Pfad nehmen und in die DB speichern. Das sind aber eigentlich Grundlagen! Such mal bei Google, vielleicht findest Du da was.

Speichern des Bildes:

  • Datei irgendwo ablegen
  • Pfad in Datenbank speichern

Abrufen des Bildes:

  • Pfad auslesen
  • Datei öffnen und auslesen

Löschen des Bildes:

  • Eintrag als gelöscht markieren
  • alle als gelöscht markierten Dateien löschen
  • Eintrag löschen


    In deine jeweilige Programmiersprache kannst du das selbst umsetzen, oder?