Binärdaten in Datenbank oder Dateisystem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi, ich bastle gerade an einer Art Document Management System. Es sollen so Sachen wie Bilder, PDF Dateien oder Archive darin gespeichert werden

Ich überlege gerade, was sinnvoller ist. Die Dokumente normal im Dateisystem speichern oder als Binär Blob in einer Datenbank? Im Dateisystem könnte man vielleicht irgendwann Probleme mit der Anzahl an Dateien in einem Verzeichnis bekommen, weshalb man irgendwie eine Gruppierung in Unterverzeichnissen machen müsste.

Wie würdet ihr das machen?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Von der Programmierung her habe ich keine Erfahrung.

Allerdings schwebt mir schon lange selbst sowas wie ein DMS vor.
Einer meiner Kernpunkte ist es auch ohne Hilfe von Zusatzsoftware an die zu verwaltenden Daten heran zu kommen. Würde also eher auf ein Ordnersystem mit Metainfos und Suchindex hinauslaufen.

Rein aus Interesse: In welchem Rahmen soll dein DMS eingesetzt werden? Was sind deine Kernpunkte?

Gruß Sebastian
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

burli hat geschrieben:Ich überlege gerade, was sinnvoller ist. Die Dokumente normal im Dateisystem speichern oder als Binär Blob in einer Datenbank?
Ich habe jahrelang im DMS-Bereich gearbeitet und bin zu dem Schluss gekommen, dass es eine perfekte Datenbank für Binärdaten gibt: das Filesystem.

Wenn du alles komplett in der Datenbank hast, dann hast du den Vorteil der Transaktionssicherheit und du hast auch bei einem Backup keine Synchronisationsprobleme. Ich finde das Handling via Dateisystem trotzdem schöner. Andere mögen das aber durchaus anders sehen.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

werft doch mal einen Blick auf Dokumenten-basierte Datenbanken wie CouchDB oder MongoDB. Die sind für so was auch sehr gut geeignet.

Python-Bindings gibt's auch.

Gruß, noisefloor
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Stimmt, an CouchDB hab ich gar nicht gedacht. Mal mit befassen
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

im letztes FreiesMagazin ist ein Artikel dazu - der gibt einen (ich hoffe guten) Überblick.

Gruß, noisefloor
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

MongoDB mit GridFS wäre eine einfache Lösung. Dateisystem - gerade wenn es sehr, sehr viele Dateien sind (vgl. http://www.infoq.com/presentations/Scale-at-Facebook) ist keine gute Idee. Eine relationale DB ist dafür in der Regel auch nicht gemacht. Allerdings muss auch nicht jeder wie Facebook 2 Milliarden Bilder pro Monat speichern.

Stefan
1-1-1
User
Beiträge: 12
Registriert: Freitag 9. September 2005, 08:42
Wohnort: München

Sind es sehr viele große Binärdateien, dann in das Dateisystem; die Datenbank wird es dir danken. Außerdem ist dann noch ein Dump der Datenbank zu händeln.

Das Dateisystem (sogar Windoofs) wird NICHT an der Anzahl der Dateien sterben; problematisch wäre ggf. unter einigen Win die Länge des Dateipfades.

Also alles in ein Verzeichnis mit generierten eindeutigen Dateinamen (TimeStamp?), dann mußt Du nur gelegentlich mit einem kleinen (Cron-)Job aufräumen. Einfach alle löschen, die nicht in der Datenbank (durch Löschungen/Änderungen) referenziert sind.
Antworten