Frage

Ich bin in den Prozess-Caching für mein Projekt zu implementieren. Nach einem Blick auf Cache-Verzeichnisstrukturen, ich habe wie viele Beispiele gesehen:

cache
cache/a
cache/a/a/
cache/a/...
cache/a/z
cache/...
cache/z
...

Sie erhalten die Idee. Ein weiteres Beispiel für die Speicherung von Dateien, sagen wir mal unsere Datei IMG_PARTY.JPG genannt wird, ist ein gemeinsamer Weg in einem Verzeichnis setzen benannt:

files/i/m/IMG_PARTY.JPG

Einige Gedanken in den Sinn kommen, aber ich möchte die wahren Gründe dafür kennen.

  • Dateisysteme tun lineare Lookups Dateien schneller finden, wenn es weniger von ihnen in einem Verzeichnis ist. Eine solche Struktur breitet sich Dateien dünn.

  • Um nicht auf Chaos * nichts-Utilities wie rm, die eine endliche Anzahl von Argumenten entgegennehmen und neigen dazu, auf einmal große Anzahl von Dateien zu löschen Hacky werden (mit ihm zu passieren, obwohl find usw.)

Was ist der wahre Grund? Was ist eine „gut“ Cache-Verzeichnisstruktur und warum?

War es hilfreich?

Lösung

Jedes Mal, wenn ich es getan habe, es hat sich nur langsam lineare Suche in Dateisystemen zu vermeiden. Zum Glück, zumindest auf Linux, das ist eine Sache der Vergangenheit.

Doch auch heute, mit b-Baum basierter Verzeichnissen, wird ein sehr großes Verzeichnis schwer zu behandeln, da es für immer und einen Tag dauern wird nur eine Liste aller Dateien zu erhalten, dagegen nie die richtige Datei zu finden, .

Andere Tipps

Verwenden Sie einfach Termine. Da Sie nach dem Datum entfernen. :)

Wenn Sie ls -l tun, werden alle Dateien müssen stat()ed werden Details zu bekommen, was erheblich zur Auflistung Zeit addiert - dies geschieht, ob der FS gehasht verwendet oder lineare Strukturen

.

Auch wenn die FS eine Fähigkeit des Umgangs mit unglaublich großen Verzeichnisgrößen haben, gibt es gute Gründe, nicht große, flache Strukturen zu haben (Sie sind auch ein Schwein sichern)

Ich habe gebenchmarkt GFS2 (geclustert) mit 32.000 Dateien in einem Verzeichnis oder in einer Baumstruktur angeordnet - rekursive Listings waren etwa 300-mal schneller als eine Liste bekommen, wenn sie alle in einer flachen Struktur waren (könnte bis zu 10 Minuten dauern eine Verzeichnisliste zu bekommen)

EXT4 zeigten ähnliche Verhältnisse, sondern als der Endpunkt nur ein paar Sekunden war die meisten Leute würden nicht bemerken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top