phpbar.de logo

Mailinglisten-Archive

[php] Dateien in Datenbanken

[php] Dateien in Datenbanken

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Tue, 03 Aug 1999 11:19:54 +0200


Thomas Rauh wrote:
> Macht es Sinn Dateien in größerem Umfang  in
> einer Datenbank abzulegen, oder ist hierfür eher
> die konventionelle Methode via Filesystem
> geeignet.

Die meisten Datenbanken und Datenbankinterfaces haben mit binären Objekten
in Datenbanken so ihre Probleme:

- SQL ist eine ASCII-Kommandosprache, die es notwendig macht, Binärdaten
  zu escapen und das ist ein Schmerz im Hintern.
- Entweder ist es notwendig, mit einem normalen SELECT das ganze BLOB aus
  der Datenbank zu ziehen und das macht mächtig Last auf dem Client, dem
  Server und dem Netzwerk, oder man hat eine API, mit der man Segmente
  eines BLOB addressieren kann (gib mir die 100 KB ab dem Offset 250 KB
  aus dem aktuellen BLOB) und das ist dann nicht mehr SQL.
- Die meisten Datenbanken haben Probleme mit der Speicherorganisation
  und der Effizienz, wenn sie neben den üblichen kleinen Objekten mit
  einem Mal riesige Objekte speichern sollen. Die Performance sind in
  einigen Fällen dramatisch.
- BLOBs unterliegen in verschiedenen Datenbanken schweren Einschränkungen
  (nur ein BLOB pro Tabellenzeile, ...)

Andererseits macht es Probleme, BLOBs außerhalb der Datenbank in einem 
Dateisystem zu speichern und in der Datenbank nur einen Verweis auf diese
Daten (Dateiname) zu halten. Es kann hier zu verschiedenen Anomalien
kommen:

- Datei wird gelöscht oder umbenannt, ohne die DB davon zu informieren.
- Datei wird aktualisiert, ohne die Metadaten in der Datenbank (mtime,
  size) zu aktualisieren.
- Datei unterliegt nicht den Zugriffsrechten der Datenbank (GRANT,
  Privilegiensystem), sondern nur den Zugriffsrechten des Betriebssystems.

Für die allermeisten Anwendungen sind die Probleme aus dem 2. Block
sehr viel leichter zu lösen als die Probleme aus dem 1. Block, weswegen
der weitaus überwiegende Teil der Anwendungsprogrammierer Dateien nicht
in der Datenbank ablegt, sondern nur Verweise auf diese Dateien.

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)


php::bar PHP Wiki   -   Listenarchive