Giovanni Rena: Flaschenhalts Bilder in DB?

Hallo,

wenn ich Bilder in ner MySQL DB ablege, wo liegt da eigentlich der Flaschenhals? Wenn ich auf einer Seite 50 Bilder darstelle, muss 50mal das Script sendimage.php3 gestartet weden, d. h. der Server wird belastet. Ja und? Wenn der sonst nicht groß belastet wird! Der Flaschenhals ist doch sowieso die Downloadgeschwindigkeit von maximal 3 MBit, oder?

Ich hab halt auf ner Seite am Anfang ein paar Hundert, später ein paar Tausend Bilder, denke wäre mit Bilder in DB praktischer, die Frage ist nun ob auch besser. Überall steht zwar dass mans lassen soll, aber wenn der Server belastet werden kann, ohne dass es was macht?

Gruß Giovanni

  1. hi,

    wenn ich Bilder in ner MySQL DB ablege, wo liegt da eigentlich der Flaschenhals?

    vor allem in der schnittstelle DB - PHP, würde ich sagen.

    Wenn ich auf einer Seite 50 Bilder darstelle, muss 50mal das Script sendimage.php3 gestartet weden, d. h. der Server wird belastet. Ja und? Wenn der sonst nicht groß belastet wird!

    wir haben ja noch genug erdöl, also warum sollen nicht alle amis auch ihre SUVs weiterfahren?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. hi,

      vor allem in der schnittstelle DB - PHP, würde ich sagen.

      Würde dadurch die Seite eigentlich langsamer beim Kunden ankommen, oder wäre dadurch  nur ne größere Belastung für den Server da?

      1. Mal noch ne Frage. Wenn ich nur die Pfade + Dateiname in der DB speichere, kann ich dann hingehn und die Dateien einfach nummeriert (1,2,3...) in einem Verzeichnis ablegen? Es könnten irgendwann auch mal ein paar Tausend Dateien sein, wo liegt da die Grenze? Wird das nicht langsam?

        1. Hallo Giovanni,

          Mal noch ne Frage. Wenn ich nur die Pfade + Dateiname in der DB speichere, kann ich dann hingehn und die Dateien einfach nummeriert (1,2,3...) in einem Verzeichnis ablegen? Es könnten irgendwann auch mal ein paar Tausend Dateien sein, wo liegt da die Grenze? Wird das nicht langsam?

          über eine Datenbanklösung würde ich in dem Fall nicht mal mit einer Pistole auf der Brust denken wollen. Überlege Dir eine Möglichkeit, wie Du die Pfade in ein Datenfeld ablegen würdes und schon weißt Du, wie Du Verzeichnisse anzulegen hast.

          Gruß aus Berlin!
          eddi

          1. über eine Datenbanklösung würde ich in dem Fall nicht mal mit einer Pistole auf der Brust denken wollen. Überlege Dir eine Möglichkeit, wie Du die Pfade in ein Datenfeld ablegen würdes und schon weißt Du, wie Du Verzeichnisse anzulegen hast.

            Ist nicht nur ein Wert, eine Datei hat 5 andere Eigenschaften/Werte, was in einer DB 7 Spalten ergeben würde (+ ID). Da wäre ne DB schon besser. Aber ich gebe dir Recht, wenns wirklich nur ein Pfad + Dateiname wäre, wäre deine Lösung besser.

            1. hi,

              Ist nicht nur ein Wert, eine Datei hat 5 andere Eigenschaften/Werte, was in einer DB 7 Spalten ergeben würde (+ ID). Da wäre ne DB schon besser. Aber ich gebe dir Recht, wenns wirklich nur ein Pfad + Dateiname wäre, wäre deine Lösung besser.

              und warum packst du nicht die daten/"eigenschaften", die sich für die DB eignen, dort hinein, und das, was sich eher weniger eignet (die eigentlichen, binären bilddaten) ins dateisystem?

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. Werd ich auch machen, nachdem man mir ja hier beschrieben hat, wieso! Ich hätte halt nen Server der sonst nicht groß belastet wird, von daher hab ich mir gedacht - wieso nicht die Möglichkeiten nutzen die mir zur Verfügung stehen... aber egal. Ich pack die Files ins Dateisystem und die Daten in die DB!

                Gruß Giovanni

        2. 你好 Giovanni,

          Mal noch ne Frage. Wenn ich nur die Pfade + Dateiname in der DB
          speichere, kann ich dann hingehn und die Dateien einfach nummeriert
          (1,2,3...) in einem Verzeichnis ablegen? Es könnten irgendwann auch
          mal ein paar Tausend Dateien sein, wo liegt da die Grenze? Wird das
          nicht langsam?

          Auch das kann langsam werden, ja. Das haengt aber stark vom Dateisystem ab.
          Ext2 benutzt z. B. linked lists und muss diese dann durchsuchen, was einen
          Aufwand von O(n) gibt, damit wird das dann bei vielen Dateien _sehr_ langsam.
          ReiserFS benutzt stattdessen Baeume, da ist der Aufwand O(ld n), da faellt
          das nicht ganz so ins Gewicht.

          再见,
           CK

          --
          No Shoes On Mat!
          http://wwwtech.de/
        3. Mal noch ne Frage. Wenn ich nur die Pfade + Dateiname in der DB speichere, kann ich dann hingehn und die Dateien einfach nummeriert (1,2,3...) in einem Verzeichnis ablegen? Es könnten irgendwann auch mal ein paar Tausend Dateien sein, wo liegt da die Grenze? Wird das nicht langsam?

          das hatten wir letztens auch schon mal.

          die dateien müssen ja nicht alle in nur einem verzeichnis sein.
          man kann ja einen verzeichnisbaum erstellen und so die dateien in dem baum verteilen.
          z.b. in der ersten ebene ein verzeichnis mit den anfangsbuchstaben (a-z).
          in der nächsten ebene mit dem 2. buchstaben usw.

          ganz schlaue formen den dateinamen zu md5 und bauen daraus einen baum.

      2. 你好 Giovanni,

        vor allem in der schnittstelle DB - PHP, würde ich sagen.

        Würde dadurch die Seite eigentlich langsamer beim Kunden ankommen, oder
        wäre dadurch  nur ne größere Belastung für den Server da?

        Sowohl als auch. Dadurch, dass die Belastung steigt dauert es auch laenger,
        bis man eine Antwort vom Server bekommt.

        再见,
         CK

        --
        Das Leben ist wie ein Kartenspiel: was dir gegeben wurde, ist vorbestimmt. Doch wie du damit spielst, ist deine Entscheidung.
        http://wwwtech.de/
  2. wenn ich Bilder in ner MySQL DB ablege, wo liegt da eigentlich der Flaschenhals? Wenn ich auf einer Seite 50 Bilder darstelle, muss 50mal das Script sendimage.php3 gestartet weden, d. h. der Server wird belastet. Ja und? Wenn der sonst nicht groß belastet wird! Der Flaschenhals ist doch sowieso die Downloadgeschwindigkeit von maximal 3 MBit, oder?

    ????? erst mal sortieren.

    1. bilder in mysql
    2. 50 bilder in einer HTML seite
    3. belastung

    1. hat nix mit 2. zu tun.
    wenn auf der html seite 50 bilder sind, muß dort auch 50 mal ein IMG tag sein. diese fordert der browser vom server an.
    ob der server diese bilder nun statisch aus dem dateisystem holt, oder über ein script generiert, ist dem html browser völlig egal.
    es ist halt nur die frage, ob auch der bildinhalt mit mysql gespeichert wird, oder nur ein pfad in das dateisystem. den bildinhalt in mysql zu speichern kostet natürlich (unnötig) kraft.

    welche möglichkeit soll es geben, 50 bilder in einem stück vom server an den client browser zu schicken?

    wenn bei der erstellung der html seite die dateipfade aus der datenbank ermittelt und als statische pfade auf das dateisystem eingetragen werden, wird auch kein weiteres script benötigt um ein einzelnes bild zum client browser zu schicken.

    diese vorgehensweise verspricht die geringste belastung.

    Ich hab halt auf ner Seite am Anfang ein paar Hundert, später ein paar Tausend Bilder, denke wäre mit Bilder in DB praktischer, die Frage ist nun ob auch besser. Überall steht zwar dass mans lassen soll, aber wenn der Server belastet werden kann, ohne dass es was macht?

    den bildinhalt in mysql zu speichern kostet natürlich (unnötig) kraft.