Qual'è una buona struttura per salvare e recuperare le posizioni delle immagini?

0

Ho un'applicazione java-ee, dove raccolgo informazioni sui film. Nel mio backend fornisco dati come il nome, la descrizione, il genere e un uuid casuale.

Ho anche molti file correlati, che sono memorizzati su un file server. Compresi alcuni screenshot, il dvd o la copertina bluRay ei trailer video.

Il mio approccio attuale è:

Quando si salvano i file sul fileserver, recupero i film uuid casuali (che è la chiave primaria btw.). Quindi rinominare i file screenshot_[UUID]_1 , screenshot_[UUID]_2 ... ecc.

Ora ci sono molti altri modi per gestirlo, come salvare tutti i nomi di file in un database o creare una struttura dir sul fileserver per ogni uuid e, ad esempio, restituire tutte le immagini nella cartella "[uuid] / screenshots" via REST.

Mi aspetto circa 30k richieste al giorno, quindi il servizio deve essere piuttosto performante.

Qual è il modo migliore per risolvere questo problema?

    
posta Goot 02.03.2014 - 16:18
fonte

2 risposte

1

Il modo migliore per risolvere questo è di dimenticare qualsiasi micro-ottimizzazione come "uso di una struttura di directory" rispetto a "ogni nome di file contenente tutto l'UUID" (anche se dovresti controllare se c'è una limitazione nel file system stai per utilizzare il numero di file in una directory). Implementa una soluzione semplice che si adatta bene all'infrastruttura esistente, crea alcune richieste di esempio e misura se la soluzione è abbastanza veloce . In caso contrario, misura quale parte della soluzione è troppo lenta, quindi migliora quella parte . Tutto il resto è probabilmente ottimizzazione prematura .

    
risposta data 02.03.2014 - 17:31
fonte
0

Come al solito, la risposta è "dipende". Ci sono molti modi in cui puoi farlo, ogni soluzione varierà a seconda della tua situazione unica.

Ho scoperto che Windows tende a sfuggire a più di 1000 file per directory, quindi in passato ho creato una cartella per 1000 file. Ma potresti dividerlo avviando il carattere (ad esempio in ordine alfabetico) ... o creando un albero gerarchico, o dividendolo tra le unità, o usando FILESTREAM di SQL Server ... e poi hai fatto un sacco di ottimizzazione prematura e hai perso il tempo di tutti!

Prova alcuni scenari e getta un sacco di file casuali su di esso e guarda come si comporta.

O semplicemente buttare tutto in una cartella e comprare molte unità SSD:)

    
risposta data 01.07.2014 - 07:36
fonte