100.000 Dateien und mehr in einem Ordner, sinnvoll?

stefanstp

Ensign
Registriert
Juni 2009
Beiträge
252
Wir lassen gerade unsere Webseite überarbeiten und kurz vor der Abnahme sehe ich, dass die Programmierfirma sämtliche Uploads von Videos, Arbeitsdateien, Vorschaubildern usw. in einem Ordner speichern (per Datenbank aber dann virtuell sozusagen jede Datei z. B. in einem nicht vorhandenen Video-Ordner definieren).

Meine Frage: Ist es sinnvoll, dass in einem Ordner 100.000 und mehr Dateien liegen? Hat das auch Nachteile z. B. beim Aufrufen in der Shell/Midnight Commander?

Bitte um Hilfe

Stefan
 
Ob das Probleme macht weiß ich ehrlich gesagt nicht, allerdings würde mich das schon arg stören, wenn alle Dateien unsortiert rumliegen. Ich gehe immer dazu über, dass für alle Uploads automatisch ein Ordner für Jahr darin Monat und wenn sinnvoll darin Tag erstellt wird.
 
Irgendwann dauert es halt immer länger, um den ganzen Ordner aufzulisten. Ich persönlich würde drauf achten und eher (wie andere es auch machen) Unterordner anlegen und die Anzahl Dateien für einen Ordner kleiner zu halten.

gruß
hostile
 
Gegenfrage: Wo möchtest du die Dateien denn sonst ablegen?
Jede Enumeration braucht über 100.000 Dateien natürlich sehr lange, wenn alle aufgezählt werden sollen. Ein MC zum Beispiel zählt aber gar nicht alle Dateien auf, sondern nur die, die er gerade anzeigt. Eine Shell enumeriert gar nicht über Dateien, solange du es nicht explizit forderst.
Da für uns nicht sichtbar ist, was auf den Dateien passiert, können wir nicht sagen, ob das Probleme macht. Ein bloßes Herumliegen der Dateien hat aber keine Nachteile, solange das Dateisystem das Herumliegen erlaubt.
 
Je nach Dateisystem kann es zu teils massiven Verzögerungen bei scheinbar einfachen Operationen kommen, wie etwa dem Auflisten aller Dateien.

Sinnvoll wäre etwa die thematische Gruppierung nach Videos, Bildern, etc. und dort dann weiter unterteilen, sofern notwendig, etwa über Jahre und/oder Monate.
 
PS: Ich erinnere mich nur an ein Beispiel mit NTFS und über 100.000 Dateien. Das war nicht schön, da aufzuräumen. Aber jedes Dateisystem ist ja etwas anders. In sofern kann man das nicht pauschal sagen.
 
Wenn man so einen Ordner öffnit mit einem Fileexporer, der auch alle Dateien untersucht ob man dafür ein Vorschaubild erstellen kann und dies dann auch noch tut, dann kann das schon ziemlich lange dauern, aber in der Shell ein par befehler über bestimmte Dateien laufen zu lassen dürfte nicht weiter schlimm sein. Meiner Erfahrung nach jedenfalls kommt Linux mit solchen Riesen Ordnern weit besser klar als Windows.

Jedenfalls 5311 Dateien in meinem /bin interessiert "Dolphin" noch nicht die Bohne :D , daber das kann sich evtl noch ändern bei noch mehr Dateien? weiß ich nicht. (lib64 hat auch "nur" um die 6400 Dateien bei mir)
 
  • Gefällt mir
Reaktionen: bananen_admiral
stefanstp schrieb:
Ist es sinnvoll, dass in einem Ordner 100.000 und mehr Dateien liegen?
Das hängt vom Host OS und Dateisystem ab. Ich hatte es schonmal mit einer Windows Netzwerkfreigabe mit 500k Dateien in einem Ordner zu tun. Das war im Windows Explorer natürlich träge, weil der erstmal versucht hat den Ordner zu indizieren, aber in der dafür vorgesehenen Anwendung hat es erstaunlich gut funktioniert.
Ich schätze mal bei so vielen Dateien wird eine GUID als Dateiname vergeben, um Konflikte auszuschließen, was an sich okay wäre.
Wenn die Dateien auf einem Unix Server liegen und dort nur die Webseite darauf zugreifen soll, sehe ich das erstmal nicht so kritisch. Allerdings kann es zum Problem werden, wenn man in dem Ordner manuell mit einer GUI auf Dateien zugreifen will, da werden viele File Manager nicht performant arbeiten.
 
Viele tools machen Problem bzw. werden sehr langsam wenn man zu viele Dateien in einem Ordner hat. Die 100.000 sind etwa der Bereich wo das anfängt sich bemerkbar zu machen in vielen Fällen. Es kann aber auch tools geben die da schon richtig Probleme bekommen. Generell sind Kommandozeilentools da eher besser als GUIs, die machen bei 100.000 doch recht wahrscheinlich Probleme.

Bei 100.000 würde ich einen Ordner noch als grade so akzeptabel sehen, solange es nicht später dann 1 Million wird. Grundsätzlich ist es aber sinnvoll bei diesen Mengen die Dateien in Unterordner gleichmäßig zu verteilen. Zum Beispiel nach Zeit wie schon erwähnt. Meine bevorzugte Variante wenn es kein sinvolles natürliches Kriterium gibt das die Dateien gleichmäßig verteilt ist z.b. eine zufällige ID (Buchstaben oder alphanumerisch) zu nehmen und dann die ersten ~2 Zeichen davon als Unterordner zu nehmen und die Datei nach der ID benennen. Mit 2 Ebenen und ~26-36 Zeichen verteilt man die Dateien schon sehr gut auch wenn es viele Millionen sind.
 
Bei ext4 gibt es zB "dir_index" / gehashtes directory :siehe stackoverflow

Die Datenbank und das Dateisystem (welches?) wird weniger probleme haben , als potentiell die verschiedenen Tools, die diese Datensätzte darstellen.
Das hängt aber von dem im Programm verwendeten Algorithmus ab.

Ähnlich sind zB Probleme mit dem öffnen von sehr großen Dateien in Texteditoren.

Eigentlich sollte der Datenbank/Webseite vertraut werden, dass die Daten gut genug gespeichert sind.
Wenn der Zugriff über die Datenbank erfolgt ist dank Abstraktion es doch eigentlich egal wie die Inhalte organisiert sind - diese werden über das "Webinterface" aufgerufen und nicht über das "Dateisysteminterface".

Eine "Dateisystemansicht" sind bei Webseiten heute oft deaktiviert - "Directory Listings" Feature
zB bei spiegel.de können sich auch nicht einfach alle Bilder auf dem CDN angesehen werden.
Das "CDN" ist vermutlich da auch nur ein einzelnes "Verzeichnis"
Die Dateien/Ressourcen haben keine aussagekräftige Namen, sondern nur noch UUID, Hashes, Timestamps und ihre Metainformation liegt woanders.
 
  • Gefällt mir
Reaktionen: snaxilian
Jeder größere S3 Bucket hat unsortiert alle möglichen Daten an einem Ort, so what?^^
Die Sortierung nach Ordnern und Unterordnern ist etwas für menschliche Anwender zur Visualisierung, ein Computer hat davon nix bis nur sehr wenig. Diese grafischen Frontends können dann irgendwann je nach OS, Filesystem und Tool lahm werden aber schädlich ist das soweit mir bekannt nicht.
 
Vermutlich ist es in der URL der Assets auch schöner wenn die nach dem Schema https://www.meinedomain.tld/assets/img/mein-bild.jpg aufgerufen werden statt https://www.meinedomain.tld/assets/img/2020/09/mein-bild.jpg.

Dem Webserver ist das wurscht.
Manuelle Ansicht ist mühsam.

Wichtig ist Beschlagwortung in der Verwaltungssoftware.
Dann kann ev per Export beliebige Strukturen hergestellt werden.

User generated Content würde ich ggf seperieren von im Template verwendeten Bildern.
 
Zurück
Oben