phpbar.de logo

Mailinglisten-Archive

[php] Re: Datenbanken vollblobben ?!?!

[php] Re: Datenbanken vollblobben ?!?!

Martin Ramsch m.ramsch_(at)_computer.org
Wed, 11 Aug 1999 16:53:46 +0200


Marcel Beerta schrieb am Dienstag, den 10. August 1999:
> Für mich wäre es einfacher, alle Bilder in der Datenbank zu
> speichern aber ich bin mir unsicher ob das gut für die Performance
> ist. Was denkt ihr denn davon, die datenbank vollzublobben ?!

Christian Mack hat das auf der internationalen MySQL-Mailingliste
sehr schön zusammengefaßt.  Hier meine übersetzte Version mit
Ergänzungen ...

Frage:
  Wie speichert man Bilder in einer MySQL-Datenbank?

Antwort in Stichpunkten:
  - Zur Speicherung verwendet man einen der BLOB-Feldtypen.
  - Beim Einfügen der Binärdaten müssen die Zeichen ' " \
    und die Binärnull kodiert werden als \' \" \\ und \0
  - Beim Auslesen aus der Datenbank erhält man direkt die
    Binärdaten.

  - Für Bilder größer als etwa 100 KByte ist es meist besser,
    sie im Dateisystem und nicht in MySQL zu speichern.
  - Speichert man Bilder in MySQL, so empfiehlt es sich, alle
    BLOBs zusammen mit einem Identifikator (z.B.: bid INT)
    zentral in _einer_ Tabelle zu speichern und in anderen
    Tabellen nur mit dem bid zu arbeiten.
    So hat man das Problem der Fragmentierung nach Löschungen und
    Änderungen nur in der einen BLOB-Tabelle und die Arbeit mit
    anderen Tabellen wird nicht verlangsamt.

  - Tabellen können in MySQL 3.22.x nur maximal 4 GByte groß werden.
    Manche Betriebssysteme beschränken das evtl. auf nur 2 GByte.
    Man kann deshalb nur ca. 20000 Bilder zu 100 KByte in einer
    Tabelle ablegen.

Frage:
  Wie verwende ich solche Bilder in HTML-Seiten?

Antwort:
  - In der HTML-Seite verwendet man ein normales <IMG>-Tag,
    gibt als URL für das Bild aber ein CGI-Skript oder PHP-Programm
    an, welches das gewünschte Bild aus der Datenbank abruft.
  - Dabei muß der Content-TYpe passend zum Bild erzeugt werden, also
      Content-Type: image/gif  oder  Content-Type: image/jpeg

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7


php::bar PHP Wiki   -   Listenarchive