Ornder Struktur für viele Dateien
-
Hallo Leute,
kann mir einer sagen oder ein Rag geben wie ich am besten Dateien genauer gesagt Profilbilder im Ordner/Ordnern Strukturiere.
Ich dachte zuerst daran alle Dateien in einen Ordner zu packen, aber wenn der Ordner seine max. Anzahl an Dateien erreicht hat, dann muss ich mein System umschreiben.
Ich dachte auch schon daran dass man pro Ordner 1000 Dateien packt.Es soll eine Art Community werden und am Anfang sind es, ja klar, wenige aber später hoffe ich es werden mehr.
Wenn nicht dann halt nicht, würde trotzdem gerne wissen wie man so viele Dateien am besten Strukturiert.Die Zahl der Dateien, an die ich denke ist ca. 4 Mio.
-
Alphabetisch? So eine Art Trie auf der Festplatte?
-
iOrdner schrieb:
Hallo Leute,
kann mir einer sagen oder ein Rat geben wie ich am besten Dateien genauer gesagt Profilbilder im Ordner/Ordnern Strukturiere.Jein. Wenige Infos.
iOrdner schrieb:
Ich dachte zuerst daran alle Dateien in einen Ordner zu packen, aber wenn der Ordner seine max. Anzahl an Dateien erreicht hat, dann muss ich mein System umschreiben.
Der Server dreht eh auf Linux oder BSD, da hat ein halbwegs modernes Dateisystem keine erreichbare "max. Anzahl an Dateien". Laaange bevor das Dateisystem bei 4Mio+ abfangen würde, langsam leicht lahmer zu werden, hätte Deine Anwendung Probleme, die Daten zu verkloppen. Destawegen tust Du die Dateinamen in eine Datenbank zum Bleistift. Haste das eh getan, biste bereits fertig.
iOrdner schrieb:
Ich dachte auch schon daran dass man pro Ordner 1000 Dateien packt.
Kann man auch machen, wenn man dem Dateisystem nicht traut, siehe Sqid, CCache, Polipo oder so. Würde ich aber nur machen, wenn der Code explizit auf alten Plattformen laufen können soll. Normalerweise isses nur ein Indirektionsschritt mehr und bringt Mehrkosten.
Hingegen hilft vermutlich auf jeder Plattform das Gruppieren nach der allerhäufigsten Gruppierung, die die User angezeigt bekommen. Zum Beispiel nach Anfangsbuchstaben, *falls* die ANfangsbuchstabenansicht oft ist und dabei die Dateinamen nicht aus der Datenbank kommen.
iOrdner schrieb:
Die Zahl der Dateien, an die ich denke ist ca. 4 Mio.
Du baust Dir eh so schlaue Funktionen wie eine, die anhand des Benutzernamens die Dateu öffnet/liest und so. Lauter ganz kleine Funktionen. Da kannste dann, wenns 4 Mrd. Dateien werden die kleine Funktion anpassen und nichts und gar nichts am Rest des Codes muss sich ändern deshalb.
-
Hallo,
danke erstmal für die Antworten.
Bei den Dateien handelt es sich um Bilder, pro User ein Profil-Bild, 1000 User => 1000 Bilder, 10.000 User => 10.000 Bilder, 4.000.000 User => 4.000.000 Bilder.
Na gut, die Profilbilder sind keine Pflicht, also werden es vielleicht nicht so viele sein :).Die Gruppierung nach dem Anfangsbuchstaben z.B. hört sich gut an, oder der PLZ oder sonst was.
Also kann ich in einen Ordner sehr viele Dateien (Bilder) packen.
Wenn es zu viel wird, merke ich es am "langsam werdenden" System!? Denn es könen auch 3.000.000 Usernamen mit "k" beginnen.Destawegen tust Du die Dateinamen in eine Datenbank zum Bleistift. Haste das eh getan, biste bereits fertig.
Den Satz verstehe ich nicht. Meinst du dass ich die Dateinamen in die Datenbank packe, um die nicht jedes mal zu suchen? klar!
-
Wenns wirklich sehr viele Dateien sind, machen wir das meist so. Wir berechnen von einem Wert, der pro Upload unterschiedlich ist z.B. Dateiname oder Dateiinhalt den MD5-Hash z.B.
"c0e84e870874dd37ed0d164c7986f03a"
Daraus wird folgender Pfad erstellt.
/c0/e8/<ID>
<ID> ist in dem Fall die Unique Upload-ID in der Datenbank.
Files ------ id: 1024 path: /c0/e8/1024 mimeType: ... size: ...
Durch diese Struktur und MD5 verteilen sich die Dateien ziemlich gleichmäßig auf die verschiedenen Unterverzeichnisse.