Mailinglisten-Archive |
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