Speichern einer großen Anzahl von Dateien im Dateisystem

8

Ich habe Millionen von Audiodateien , die basierend auf GUId ( Ссылка ) generiert wurden. Wie kann ich diese Dateien im Dateisystem speichern, so dass ich effizient weitere Dateien hinzufügen im selben Dateisystem und effizient für eine bestimmte Datei suchen kann Auch sollte es in Zukunft skalierbar sein.

Dateien werden basierend auf GUId (eindeutiger Dateiname) benannt.

Beispiel:

[1] 63f4c070-0ab2-102d-adcb-0015f22e2e5c

[2] ba7cd610-f268-102c-b5ac-0013d4a7a2d6

[3] d03cf036-0ab2-102d-adcb-0015f22e2e5c

[4] d3655a36-0ab3-102d-adcb-0015f22e2e5c

Pl. geben Sie Ihre Ansichten.

PS: Ich habe bereits & lt; Speichern einer großen Anzahl von Bildern & gt ;. Ich brauche die bestimmte Datenstruktur / Algorithmus / Logik , damit sie auch in Zukunft skalierbar sein kann.

EDIT1: Dateien sind etwa 1-2 Millionen in der Anzahl und das Dateisystem ist ext3 (CentOS).

Danke,

Naveen

    
Naveen 16.10.2009, 05:42
quelle

3 Antworten

14

Das ist sehr einfach - Erstellen Sie einen Ordnerbaum basierend auf GUID-Werten Teile.

Erstellen Sie beispielsweise 256 Ordner, die jeweils nach dem ersten Byte benannt sind, und speichern Sie nur Dateien, deren GUID mit diesem Byte beginnt. Wenn das immer noch zu viele Dateien in einem Ordner sind - machen Sie dasselbe in jedem Ordner für das zweite Byte der GUID. Fügen Sie bei Bedarf weitere Ebenen hinzu. Die Suche nach einer Datei wird sehr schnell sein.

Indem Sie die Anzahl der Bytes auswählen, die Sie für jede Ebene verwenden, können Sie effektiv die Baumstruktur für Ihr Szenario auswählen.

    
sharptooth 16.10.2009, 05:45
quelle
1

Ich würde versuchen, die Anzahl der Dateien in jedem Verzeichnis auf eine überschaubare Anzahl zu beschränken. Der einfachste Weg dazu ist der Name des Unterverzeichnisses nach den ersten 2-3 Zeichen der GUID.

    
cletus 16.10.2009 05:45
quelle
0

Das Sortieren der Audiodateien in separate Unterverzeichnisse kann langsamer erfolgen, wenn dir_index auf dem ext3-Volume verwendet wird. (dir_index: "Verwenden Sie Hash-B-Bäume, um Suchvorgänge in großen Verzeichnissen zu beschleunigen.")

Dieser Befehl setzt das Merkmal dir_index: tune2fs -O dir_index /dev/sda1

    
sambowry 16.10.2009 18:35
quelle