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
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.
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
Tags und Links algorithm c data-structures filesystems