RE: [pgsql-de-allgemein] Wie Binärdateien verwalten? Filesystem / bytea / Large-Object?

From: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "Thomas Uzunoff *EXTERN*" <postgresql(at)grizzlycrm(dot)de>, "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: RE: [pgsql-de-allgemein] Wie Binärdateien verwalten? Filesystem / bytea / Large-Object?
Date: 2014-02-19 11:47:35
Message-ID: A737B7A37273E048B164557ADEF4A58B17CB2A3E@ntex2010a.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Thomas Uzunoff schrieb:
> ich habe eine Anwendung, in der Dateien verarbeitet werden. Diese
> werden, wenn man sie im Programm speichert, auf einem FTP Server
> abgelegt und nur wenige Infos (die kaum Speicherplatz benötigen) in
> einer Datenbank Tabelle gespeichert. Das Konstrukt sollte ursprünglich
> verhindern, dass die Datenbank in kurzer Zeit sehr groß wird, was
> (vermutlich) langfristig zu Perfornmance-Problemen geführt hätte. Jetzt
> ist es leider so, dass die Anbindung an den FTP-Server andauernd
> Probleme bereitet, weshalb ich den FTP-Teil gerne austauschen würde.
>
> Jetzt meine Frage:
>
> Wie sollten diese Binärdaten am besten gespeichert werden?
>
> Überlegung 1: Statt FTP zu nutzen, die Dateien direkt in das Dateisystem
> schreiben.
> Überlegung 2: In die Tabelle, in der die anderen Infos zur Datei
> gespeichert werden, noch eine Spalte vom Typ bytea einfügen und die
> Dateiinhalte dort speichern
> Überlegung 3: Die Dateien als Large-Objects behandeln (obwohl ich noch
> nicht ganz verstanden habe, was das bedeutet)
>
> Momentane Konfiguration des Servers:
>
> - PostgreSQL Version: 9.1
> - Application Server: Glassfish
> - Programm ist in Java geschrieben
> - OS: Debian 6.0.4
>
> In vermutlich 90% der Fälle liegt die Dateigröße bei unter 50kb
> zu 1% vermutlich über 1 MB
> und der Rest dazwischen.
> Dateien größer als 15MB sind extrem unwahrscheinlich, aber nicht
> auszuschließen
> Im Schnitt sind die Dateien rund 160kb groß
>
> Natürlich möchte ich auch zukünftig verhindern, dass es langfristig zu
> Performance-Problemen beim Arbeiten oder Backup kommen könnte.

Meine Meinung:

Überlege zuerst, ob Du die Dateien in der Datenbank haben willst oder nicht.

Vorteil: Binärdaten und andere Daten sind automatisch konsistent. Dadurch
wird auch die Applikation einfacher zu schreiben.

Nachteil: Die Performance ist schlechter, die Backups werden groß.

Überlege Dir, wie groß die Datenbank im Endausbau werden wird und wie
viele Zugriffe pro Sekunde Du erwartest. Und wie wichtig Konsistenz
zwischen Binärdaten und dem Rest ist. Das sollte bei der Entscheidung
helfen.

Bei der erwarteten Größe der Binärdaten würde ich bytea verwenden,
weil das in der Handhabung einfacher ist als large objects.

Liebe Grüße,
Laurenz Albe

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Thomas Uzunoff 2014-02-24 09:32:02 Re: Wie Binärdateien verwalten? Filesystem / bytea / Large-Object?
Previous Message Ilya Kosmodemiansky 2014-02-19 11:43:11 Re: [pgsql-de-allgemein] Wie Binärdateien verwalten? Filesystem / bytea / Large-Object?