phpbar.de logo

Mailinglisten-Archive

Binäre Daten in DB

Binäre Daten in DB

albrecht albrecht at act-net.com
Die Mar 4 14:25:41 CET 2003


Moin,

> Die Frage unsererseits ist halt nur, ob das Sinn macht und was die Nachteile
> sind.

Es _ergibt_ Sinn und es hat erhebliche Nachteile.

- Performance: Wie beschrieben sollte hier sehr genau abgewogen werden, 
wie groß die BLOBs sind, wieviele genutzt werden, wie hoch die 
Änderungsrate (Fragmentierung der DB-Datei) ist etc
- Dateisystem: Wenn kein mySQL mit automatischem RAID verwendet wird, 
stößt man bei Bild-Daten sehr schnell an Filesystem-Begrenzungen
- Sicherheit: Es ist in vielen Setups aufwendiger, wenige SEHR GROßE 
Dateien zu sichern als mehrere kleine, nicht zuletzt, weil die Sicherung 
übers Netz erfolgt und so instabile Lösungen wie NFS verwendet

Eines unserer Bild-DB Systeme nutzt BLOBs für Thumbnails (und nur für 
diese, die MAG-, PREV-, HIRES- und Original-Daten liegen auf 
EMC-Quadraten und HP Jukeboxen). Das hat sich als _sehr_ performant und 
in dem konkreten Setup als deutlich flexibler und flotter herausgestellt 
als 500.000 Thumbnail-Dateien im Filesystem. Daraus eine Pauschalaussage 
abzuleiten wäre aber falsch. Die Argumentation über die Konsistenz ist 
lückenhaft, denn die Verbindung "Dateiname in SQL"-"Datei auf Platte" 
ist ja nur eine von vielen Relationen in einer Bild-DB: Systematiken, 
Gruppierungen, Rechte, Verzeichnisse, temporäre Listen etc verweisen 
alle auf Thumbnails, Bild-Daten etc. Eine grundlegene 
Design-Entscheidung aufgrund eines EINZELNEN Links zu fällen, halte ich 
für verkehrt.

Es kommt hier (leider) auf die tatsächliche Anwendung an... also wieder, 
wie oben: Wie viele Blobs, wie groß, welcher Zugriff, von wie vielen 
Nutzern (Flaschenhals SQL-Interface) etc.

> Ok.. DB wird gross. Das ist klar. Aber kein Argument auf Seiten der
> Programmierung.

Doch, das ist ein Argument, denn Performance und oben angedeutete 
Probleme spielen für den Programmierer immer eine Rolle.

> Die DB benötigt eh einen starken Server für evtl. Lösungen.
> Rechtevergabe, ok.. ansonsten muss halt, wenn erwünscht, noch der Username
> gespeichert werden, wo jeweils immer die Userrechte überprüft werden.

Naja, zu einem Bild-DB System gehört noch ein bisschen mehr. Wir 
entwickeln seit rund acht Jahren Bild-Datenbanken für Verlagshäuser und 
Agenturen, auch auf mySQL Basis - und die Erfahrung zeigt, daß 
schnell-schnell Lösungen sehr schnell-schnell zu Frust führen ;-)

> Jetzt geht es halt um Vor-/Nachteile der Lösung mit richtigen Argumenten.
> Die Lösung soll hinterher evtl. auch auf MySql laufen. Bevorzugt wird von
> uns eher die DB PostGreSql.

PostGRESQL haben wir - zuletzt vor zwei Jahren - getestet und es schied 
sofort wegen der massiven Performance-Nachteile gegenüber mySQL aus. 
Zwar sind wir auch bei mySQL sehr schnell an SEHR große 
Performance-Grenzen gestoßen (die ich hier zu lösen versuchte, ohne 
Ergebnis), aber wenn man die Probleme von mySQL umschifft, sehe ich 
keinen Grund (speziell für Bild-Datenbanken), auf postgresql zu setzen.

Marc Albrecht
A.C.T. / Level-2

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive