Speicherstrategie..
Speicherstrategie..
Hallo,
ich würed gerne ein paar Meinungen zu 2 verschiedenen Speicherstrategien hoeren:
ES geht darum viele tausend Bilder auf der Festplatte zu speichern.
Jeweils 4 dieser Bilder werden einem Inserat zugeordnet.
Stategie1):
Die jeweils 4 zusammen gehoerenden Bilder werden "Verzeichnisweise" gespeichert,
etwa so: /pfad/EINDEUTIGE_INSERATID/bild.gif.
Also pro Inserat-BilderSatz(4 Stueck) ein Verzeichnis.
Strategie2):
Alle Bilder werden in einem einzigen Verzeichnis gespeichert.
Der Name der Bider enthaelt die InseratId. Dadurch koennen die zusammen gehoerende Bilder aus diesem großen Bilderverzeichnis, durch eine Abfrage per php dem jeweiligen Inserat zugeordnet werden.
Meine eigentliche Frage:
Ich bevorzuge die zweite Strategie, frage mich jedoch folgendes:
Was benötigt mehr Zeit:Das anlegen von den Verzeichnissen, zum speichern pro inseratID(Strategie1), oder das herausfiltern der betreffenden Bildern aus dem einen großen Verzeichnis, dafuer jedoch ohne das anlegen von einem zusätzlichen verzeichnis pro inserat(Strategie2).?
Ich hoffe ich konnte verständlich machen, um was es mir geht.
Ich wäre dankbar fuer eure Meinung.
mfg ufh
ich würed gerne ein paar Meinungen zu 2 verschiedenen Speicherstrategien hoeren:
ES geht darum viele tausend Bilder auf der Festplatte zu speichern.
Jeweils 4 dieser Bilder werden einem Inserat zugeordnet.
Stategie1):
Die jeweils 4 zusammen gehoerenden Bilder werden "Verzeichnisweise" gespeichert,
etwa so: /pfad/EINDEUTIGE_INSERATID/bild.gif.
Also pro Inserat-BilderSatz(4 Stueck) ein Verzeichnis.
Strategie2):
Alle Bilder werden in einem einzigen Verzeichnis gespeichert.
Der Name der Bider enthaelt die InseratId. Dadurch koennen die zusammen gehoerende Bilder aus diesem großen Bilderverzeichnis, durch eine Abfrage per php dem jeweiligen Inserat zugeordnet werden.
Meine eigentliche Frage:
Ich bevorzuge die zweite Strategie, frage mich jedoch folgendes:
Was benötigt mehr Zeit:Das anlegen von den Verzeichnissen, zum speichern pro inseratID(Strategie1), oder das herausfiltern der betreffenden Bildern aus dem einen großen Verzeichnis, dafuer jedoch ohne das anlegen von einem zusätzlichen verzeichnis pro inserat(Strategie2).?
Ich hoffe ich konnte verständlich machen, um was es mir geht.
Ich wäre dankbar fuer eure Meinung.
mfg ufh
Re: Speicherstrategie..
Ich würde von beiden Lösungen abraten: Gehen wir mal von sehr vielen Inseraten aus (nehmen wir mal nur als Zahl eine Mio). Bei Möglichkeit 1 haste dann 1 Mio Verzeichnisse mit jeweils 4 Dateien drin, bei Möglichkeit 2 haste 4Mio Dateien in einem Ordner. Beides ist sehr unperformant, weil beidesmal aus 1/4 Mio ein Eintrag rausgesucht werden muss.
Ich habe eine Ähnliche Situation und habe im Moment nur ugnefähr 100.000 Bilder in einem Verzeichniss und der Zugriff ist merklich langsamer als der Zugriff auf eine Datei in einem "normalen" Verzeichniss. Ich könnte das ziemlich sicher auch durhc Benchmarks belegen. Ich habe allerdings nur ReiserFS als Dateisystem ausprobiert, evtl (Aber ich glaube es nicht) ist ext3 besser.
Ich würde dir eine andere vorgehensweise empfehlen: Deine Inserate werden ja wohl eine eindeuite ID haben. Lass diese nicht bei 1 sondern direkt bei 1000 beginnen, so das das erste Inserat die Nummer 1000 bekommt. Mach dann folgendes: Erstell in einem Bilderordner folgende Ordnerstruktur
/letze_stelle/letzten_zwei_stellen/letzten_drei_stellen/letzten_vier_stellen/komplette_id/bilder.jpg
Also zum Beispiel bei der ID 86345127:
/7/27/127/5127/86345127/bild1.jpg
Hat den Vorteil: Auf jeder Ebene, außer auf der letzten existieren maximal 10 Unterverzeichnisse die sich rasend schnell ansprechen lassen. Auf der letzten Ebene werden es auch nicht viele sein: Bei den oben angenommen 1Mio wären es auch nur 10 Verzeichnisse auf dieser Ebene. Zu programmieren ist das nicht arg schwer und auch der rechenaufwand um die letzte stelle zu erhalten ist lächerlich klein.
Ich würde es auf jeden Fall so machen und bin gerade an einer MIgration meines eigenen Systems dran mit ähnlichem Vorgehen.
Ich hoffe du verstehst was ich sagen will.
Gruß
TO
Ich habe eine Ähnliche Situation und habe im Moment nur ugnefähr 100.000 Bilder in einem Verzeichniss und der Zugriff ist merklich langsamer als der Zugriff auf eine Datei in einem "normalen" Verzeichniss. Ich könnte das ziemlich sicher auch durhc Benchmarks belegen. Ich habe allerdings nur ReiserFS als Dateisystem ausprobiert, evtl (Aber ich glaube es nicht) ist ext3 besser.
Ich würde dir eine andere vorgehensweise empfehlen: Deine Inserate werden ja wohl eine eindeuite ID haben. Lass diese nicht bei 1 sondern direkt bei 1000 beginnen, so das das erste Inserat die Nummer 1000 bekommt. Mach dann folgendes: Erstell in einem Bilderordner folgende Ordnerstruktur
/letze_stelle/letzten_zwei_stellen/letzten_drei_stellen/letzten_vier_stellen/komplette_id/bilder.jpg
Also zum Beispiel bei der ID 86345127:
/7/27/127/5127/86345127/bild1.jpg
Hat den Vorteil: Auf jeder Ebene, außer auf der letzten existieren maximal 10 Unterverzeichnisse die sich rasend schnell ansprechen lassen. Auf der letzten Ebene werden es auch nicht viele sein: Bei den oben angenommen 1Mio wären es auch nur 10 Verzeichnisse auf dieser Ebene. Zu programmieren ist das nicht arg schwer und auch der rechenaufwand um die letzte stelle zu erhalten ist lächerlich klein.
Ich würde es auf jeden Fall so machen und bin gerade an einer MIgration meines eigenen Systems dran mit ähnlichem Vorgehen.
Ich hoffe du verstehst was ich sagen will.
Gruß
TO
Re: Speicherstrategie..
Ja, so ein Prinzip hab ich ihm in einem andere Thread auch schon vorgeschlagen.
@theomega: reiserfs ist mit O(log n) ist deutich performater als ext3 mit O(n). Außerdem kann ext3 nur 32k Dateien/Verzeichnisse pro Verzeichnis verwalten.
@theomega: reiserfs ist mit O(log n) ist deutich performater als ext3 mit O(n). Außerdem kann ext3 nur 32k Dateien/Verzeichnisse pro Verzeichnis verwalten.
-
Roger Wilco
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Speicherstrategie..
Du solltest vielleicht auch schreiben, bei welchen Operationen ReiserFS einen Aufwand von O(log n) verursacht. Das ist mitnichten immer der Fall.oxygen wrote:@theomega: reiserfs ist mit O(log n) ist deutich performater als ext3 mit O(n).
Das ist schlicht und ergreifend falsch.oxygen wrote:Außerdem kann ext3 nur 32k Dateien/Verzeichnisse pro Verzeichnis verwalten.
Re: Speicherstrategie..
Ich bezog mich auf die Suche einer Datei in einem Verzeichnis.Roger Wilco wrote:Du solltest vielleicht auch schreiben, bei welchen Operationen ReiserFS einen Aufwand von O(log n) verursacht. Das ist mitnichten immer der Fall.oxygen wrote:@theomega: reiserfs ist mit O(log n) ist deutich performater als ext3 mit O(n).
Mir ist durchaus auch bekannt, dass ext3 auch eine Baumstruktur benutzten kann, das ist aber standardmäßig nicht aktiv. Sollte man in so einen Fall wohl tun. Vgl. mkfs.ext3 -O dir_index
Hast recht. Das wurde beim Schritt von ext2 -> ext3 geändert.Das ist schlicht und ergreifend falsch.oxygen wrote:Außerdem kann ext3 nur 32k Dateien/Verzeichnisse pro Verzeichnis verwalten.
-
Roger Wilco
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Speicherstrategie..
Auch ext2 unterstützt weit mehr als 2^15 Dateien pro Verzeichnis.oxygen wrote:Hast recht. Das wurde beim Schritt von ext2 -> ext3 geändert.
Siehe auch http://de.wikipedia.org/wiki/Ext2
Speicherstrategie_2....
Hallo,
und zunächst Danke fuer eure Meinungen.Ich werde die Anregung von "theomega" wohl übernehmen.
Fragt sich nur noch wie mann diese Strukktur am performantesten erstellt.
Meine erste Überlegung:
1)ID erstellen
2)dann mit substring die Verzeichnisnamen extrahieren
3)Verzeichnisse erstellen
4)Bilder speichern
Fuer Vorschlaege wie mann es performanter machen kann, bin ich dankbar?
Grüße,
mfg ufh
und zunächst Danke fuer eure Meinungen.Ich werde die Anregung von "theomega" wohl übernehmen.
Fragt sich nur noch wie mann diese Strukktur am performantesten erstellt.
Meine erste Überlegung:
1)ID erstellen
2)dann mit substring die Verzeichnisnamen extrahieren
3)Verzeichnisse erstellen
4)Bilder speichern
Fuer Vorschlaege wie mann es performanter machen kann, bin ich dankbar?
Grüße,
mfg ufh
Re: Speicherstrategie..
Die Verzeichnisse vorher einmal erstellen, ist am aller einfachsten und nicht sonderlich aufwendig, du kannst dich dann in deinen Scripten drauf verlassen das die Verzeichnisse existieren. Wegen dem Dateisystem solltest du dich nochmal intensiv auseinandersetzten, wobei bei der von mir vorgeschlagenen Vorgehensweise imho das Dateisystem nicht so die Rolle spielt.
-
outofbound
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: Speicherstrategie..
Hint:
Ein "ID" MOD "Primzahl" kann da zu sehr schönen Verteilungen führen. :)
Gruss,
Out
Ein "ID" MOD "Primzahl" kann da zu sehr schönen Verteilungen führen. :)
Gruss,
Out
