Announcement

Collapse
No announcement yet.

Bilderdatenbank

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilderdatenbank

    Hallo,
    ich möchte in einem OnlineShop die Bilderfunktion direkt über eine mySQL Datenbank laufen lassen - also nicht über das Dateisystem.

    Leider hab ich sowas noch nicht realisiert und werd aus diversen Seite auch nicht schlauer.

    Mir stellen sich folgende Fragen:
    - Was für ein Datentyp muss das Feld in der Datenbank haben?
    - kann ich ein Bild einfach wie ein norm. Textfile auslesen und in die DB schreiben?
    - Wie kann ich das Bild ausgeben lassen (am besten mit festlegbarer Skalierung)?

    Wäre super, wenn jemand die Fragen beantworten könnte... würde mich freuen!

    Dankeschön,

    ciao
    Andi

  • #2
    Wichtig ist das korrekte Quoten von BLOBs in MySQL, sonst sind Input und Output nicht mehr binaer identisch: NUL, ' " und \ muessen mit einem \ escaped werden, und NICHTS anderes.<p>
    Als Datentypen kommen TINYBLOB (bis 256 Bytes), BLOB (bis 64KB), MEDIUMBLOB (bis 16MB) und LONGBLOB (bis 4GB) in Frage. Dabei darauf achten, das der intuitive Datentyp BLOB sehr schnell eng werden kann - lieber gleich MEDIUMBLOB, damit auch Bilder mit 65kB reinpassen.<p>
    Ansonsten hat Kristian Koehntopp schonmal vor einer Weile festgestellt, dass es eigentlich keinen Sinn macht, Bilder in einer DB zu halten. Seine Argumente leuchten ein, ich machs trotzdem Wichtigster Punkt allerdings ist, dass man Bilder moeglichst nicht DIREKT aus der DB ausgibt, sondern einen kleinen Cache einbaut. Klar, das kann man auch spaeter noch als Performance-Tuning machen, ich erwaehns nur.<p>
    Binaere Daten aus einer DB werden langsamer als vom Filesystem gelesen, und mit einem Connect bei JEDEM &lt;IMG&gt;-Tag wird der Seitenaufbau unter Umstaenden sehr langsam. Sinnvoller ist es, wenn das Hauptscript, welches eh ein DB-Connect hat, die Bilddaten temporaer ins Filesystem schreibt und die IMG-Tags entsprechend setzt. Wie gesagt, im Allgemeinen ist dies sinnvoll, es kann selbstverstaendlich auch Faelle geben, in denen man das Bild direkt aus der DB in jedem IMG-Tag auslesen MUSS. Machbar ists ja.<p>
    Noch ein Tip vom Kristian, den ich bisher nicht ueberprueft hab, der aber glaubwuerdig erscheint: BLOBs nicht in grosse Tabellen mit zig-Spalten hineinstopfen, sondern in Tabellen mit wenig Spalten. Und nicht mehrere BLOBS/TEXT auf einmal, das senkt die Performance noch viel mehr. REINE BLOB-Tabellen (id INTEGER NOT NULL PRIMARY KEY, data MEDIUMBLOB) sind auch uebertrieben, der Mimetype und die Bildgroesse sowie vielleicht noch ein Timestamp und ein Copyright-Hinweis haben da allemal Platz, darum will man ja eine DB. Nur eben in vorhandene, umfangreiche Strukturen HINTERHER noch ein oder mehrere BLOBS hineinstopfen sollte man vermeiden.<p>
    Gruss, Marc

    Comment


    • #3
      oh, super... danke für die ausführliche Antwort, Marco!!

      ich schau mir das gleich an, wenn ich ausm Urlaub zurück bin *gg*

      bis denn,
      And

      Comment


      • #4
        Würde mich über ein wenig Quellcode freuen...
        Einlesen in die DB über einen Browser und ausgeben ebenso im Browser..
        Sagen wir mal, dass für das Bild eine gesonderte Tabelle existiert mit ID, BLOB, BildGroesse, BildName und BildTyp..

        Dank

        Comment

        Working...
        X