Ich muss ungefähr 600.000 Bilder auf einem Webserver speichern, der NTFS verwendet. Ist es besser, Bilder in 20 000-Bild-Blöcken in Unterordnern zu speichern? (Windows Server 2008)
Ich mache mir Sorgen darüber, dass während der Bildsuche ein Overhead des Betriebssystems entsteht
Mach es. Solange Sie einen externen Index haben und einen direkten Dateipfad zu jeder Datei haben ohne den Inhalt des Verzeichnisses aufzulisten dann sind Sie in Ordnung.
Ich habe einen Ordner mit mehr als 500 GB Größe mit über 4 Millionen Ordnern (die mehr Ordner und Dateien haben). Ich habe irgendwo in der Größenordnung von 10 Millionen Dateien insgesamt.
Wenn ich diesen Ordner versehentlich im Windows Explorer öffne, bleibt er bei 100% CPU-Auslastung (für einen Kern) stecken, bis ich den Prozess abbringe. Aber solange man sich direkt auf die Datei- / Ordner-Leistung bezieht, ist das großartig (das heißt, ich kann auf diese 10 Millionen Dateien ohne Overhead zugreifen)
Je nachdem, ob NTFS Verzeichnisindizes hat, sollte es auf der Anwendungsebene in Ordnung sein.
Ich meine, dass das Öffnen von Dateien nach Namen, Löschen, Umbenennen usw. programmatisch gut funktionieren sollte.
Aber das Problem sind immer Werkzeuge. Third-Party-Tools (wie MS Explorer, Ihr Backup-Tool, etc.) sind wahrscheinlich zu saugen oder zumindest extrem unbrauchbar mit einer großen Anzahl von Dateien pro Verzeichnis.
Alles, was ein Verzeichnis scannt, ist wahrscheinlich ziemlich langsam, aber schlimmer, einige dieser Werkzeuge haben schlechte Algorithmen, die nicht einmal auf bescheidene (10k +) Dateien pro Verzeichnis skalieren.
NTFS-Ordner speichern eine Indexdatei mit Links zu allen ihren Inhalten. Bei einer großen Anzahl von Bildern wird diese Datei stark ansteigen und Ihre Leistung negativ beeinflussen. Also, ja, allein bei diesem Argument ist es besser, Blöcke in Unterordnern zu speichern. Fragmente innerhalb von Indizes sind ein Schmerz.
Tags und Links file-io windows-server-2008 file-storage