Hi,
Für den Verzeichnis- und Dateizugriff ist das Betriebssystem zuständig und die Leistung der Maschine ausschlaggebend.
Und wie kann ich es diesem noch erleichtern?
Durch Wahl des Betriebssystems und des File-Systems.
Windows-Dateisysteme neigen ja bekanntlich stark zur Fragmentierung (NTFS nicht mehr so stark wie vorherige Windows-FS).
Und Linux hast du mehr Auswahl an Dateisystemen - da findet sich sicherlich auch irgendwo eine Übersicht, was die jeweiligen Stärken und Schwächen sind, die du gegen deine spezifische Anforderung abwägen kannst.
Ich denke es ist einfacher Mehrere Ordner mit wenigeren Dateien zu durchsuchen als ein Ordner mit später 100000000 Dateien.
Natürlich wirkt sich auf das „Suchen“ einer angeforderten Datei in der FAT (oder was immer das jewelige FS stattdessen verwenden mag) aus, noch bevor es um das eigentliche Auslesen des Dateiinhaltes geht.
Allerdings wollen die Verzeichnisse innerhalb des Pfades ja auch erst mal gesucht und gefunden werden. Wenn du fünftausend Bilder in fünf Verzeichnissen durch hundert Verzeichnisse mit jeweils fünfzig Bildern ersetzt, muss das also noch nicht unbedingt ein Vorteil sein. (Vielleicht finden sich auch diesbezüglich Benchmarks, oder auch Angaben beim jeweiligen Anbieter des FS.)
Wir reden von einer riesigen Anzahl von Bildern!
Riesig ist relativ.
Eine noch feinere Abstufung der Verteilung der Dateien auf Verzeichnisse mag sich dann vielleicht anbieten - also (beispielhaft) statt ./a/anna.jpg weiter unterteilt in ./a/n/anna.jpg.
Wenn „riesig“ dann wirklich riesig wird, Größenordungen a la Flickr, dann wird natürlich noch die Verteilung auf mehrere Maschinen hinzukommen.
Und das ist ja jetzt erst mal nur der Teil, der sich auf das Auffinden der Daten auf dem/den Server(n) bezieht.
Der andere Teil ist dann die Auslieferung an den Client. Je nachdem, wie viele Bilder einzelne Nutzer „gleichzeitig“ (pro Seite) anfordern und wie viele Nutzer gleichzeitig zugreifen werden, werden dann ggf. noch die Wahl des Webservers, Aufteilung auf verschiedene Domains (wg. limitierter Anzahl paralleler HTTP-Requests im Client), Load-Balancing u.ä. Stichwörter interessant.
MfG ChrisB
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]