maximale Anzahl Dateien in einem Ordner
Kathrin
- webserver
Hallo alle zusammen!
Ich hab eine generelle Frage zu Servern und Dateien.
Wenn ich eine Seite habe, auf der jeder User mindestens ein Bild hochladen kann, kann ich die dann alle in einem Ordner speichern, oder bringt das irgendwann Probleme mit sich? Ich mach mir ein bisschen Sorgen...
Ich möchte den Ordner nicht öffnen um den Inhalt zu sehen.
Ich will nur das jeweilige Bild für jeden User in dessen Profil anzeigen.
Wie machen das denn große Seiten wie Facebook, oder StudiVZ?
Vielen Dank
Kathrin
Oder bringt das irgendwann Probleme mit sich?
Eigendlich nicht
Mfg Licht7070
Das bedeutet ich kann ... 10 Millionen Dateien in einem Ordner speichern???
Cool!
Ich hab zwar immernoch ein wenig bedenken, aber danke!
mfg
Kathrin
Moin Moin!
Das bedeutet ich kann ... 10 Millionen Dateien in einem Ordner speichern???
Je nach Datei- und betriebssystem. Ab ein paar zehntausend Dateien werden zugriffe auf das Verzeichnis(listing) allerdings unter Umständen sehr langsam. Es gibt fast immer eine Obergrenze für die Anzahl von Verzeichniseinträgen, manchmal durch die Struktur des Verzeichnisses, spätestens aber durch die maximale Anzahl von Dateien im Dateisystemen. So lassen sich im Hauptverzeichnis von FAT12/FAT16-Medien nur ein paar wenige Einträge (ca. 500, siehe http://support.microsoft.com/kb/120138) anlegen, erst die Unterverzeichnisse können mehr Einträge enthalten.
Und um die Frage nach "großen" Websites wie Facebook und StudiVZ zu beantworten: Es gibt da so etwas wie DATENBANKEN -- die haben, ausreichen gut konstruiert, auch keine Probleme, z.B. sämtliche Konstruktionsdaten meherer dutzend Autos in allen Varianten zu speichern.
Falls Du pro User Daten speichern willst, und nicht mit einer Datenbank arbeiten kannst oder willst, bietet es sich an, pro User ein Unterverzeichnis im Dateisystem anzulegen, damit die Verzeichnisse eben nicht so voll laufen, bis sie "zu" groß sind.
Alexander
Moin!
Das bedeutet ich kann ... 10 Millionen Dateien in einem Ordner speichern???
Cool!Ich hab zwar immernoch ein wenig bedenken, aber danke!
Du solltest auch Bedenken haben.
Dass Windows im Hauptverzeichnis einer Festplatte nur eine begrenzte Anzahl von Dateien erlaubt, wurde schon gesagt.
Auch Linux erlaubt pro Dateisystem nur eine begrenzte Anzahl von Dateien. Wieviele das sind, wird beim Erstellen des Dateisystems festgelegt.
Ob es zu Performanceproblemen bei riesigen Mengen von Dateien in einem Verzeichnis kommt, hängt davon ab, welches Dateisystem benutzt wird. Modernere Dateisysteme legen Verzeichnisse als Baumstruktur an, die auch bei einer großen Anzahl von Dateien relativ schnell durchsucht werden kann, egal welche Datei man öffnen will. Ältere Dateisysteme benötigen hierzu proportional immer mehr Zeit, je weiter "hinten" im Verzeichnis die Datei liegt.
Eine vernünftige Lösung ist, diesen ganzen potentiellen Problemen einfach dadurch aus dem Weg zu gehen, indem die Dateien nicht in EIN Verzeichnis gespeichert werden, sondern direkt in eine automatische Unterverzeichnisstruktur, die man direkt aus dem Dateinamen ableitet.
Heißt die Datei also z.B. nach dem Usernamen, würde fritz.jpg in /f/r/i/fritz.jpg lagern, und peter.jpg in /p/e/t/peter.jpg. Pro Verzeichnisebene wäre bei 26 Buchstaben also nur 1/26tel der Dateianzahl zu speichern, bei drei Ebenen ist es nur noch 1/17576tel. Statt 10 Millionen Dateien landen also nur noch knapp 600 Dateien in einem Verzeichnis, wenn die Buchstaben gleichverteilt benutzt werden. Vielleicht kommt es durch lokale Häufung irgendwo mal zum zehnfachen der Anzahl, das wären dann 6000 Dateien in einem Verzeichnis - ist immer noch harmlos. Und das Prinzip ließe sich ja auch problemlos aufstocken auf vier oder mehr Ebenen.
- Sven Rautenberg
Moin Moin!
Heißt die Datei also z.B. nach dem Usernamen, würde fritz.jpg in /f/r/i/fritz.jpg lagern, und peter.jpg in /p/e/t/peter.jpg. [...] Vielleicht kommt es durch lokale Häufung irgendwo mal zum zehnfachen der Anzahl, [...]
Dem kann man wunderbar aus dem Weg gehen, wenn man statt des Namens die User oder noch besser die Uploads durchnumeriert. Statt p/e/t/peter.jpg oder gar peter.jpg speichert man dann 4/7/1/4712.jpg und statt fritz.jpg 9/3/4/9431.jpg
Alexander