Sto costruendo un'applicazione in cui ho bisogno di memorizzare milioni di immagini e successivamente etichettarle. I tag attribuiti alle immagini potrebbero cambiare nel tempo mentre il sistema di tagging si evolve. Le immagini verranno quindi cercate per tag.
In termini di archiviazione dei file, ho eliminato l'opzione di archiviarli in un RDBMS; L'ho provato in passato e ho riscontrato problemi di scalabilità e prestazioni e allo stesso modo ho eliminato l'opzione di archiviarli su un file system, poiché anche questo mi ha dato problemi di prestazioni, scalabilità e backup. Ora sto prendendo in considerazione l'utilizzo di un data store di valori chiave NOSQL o qualcosa come Amazon S3. Un archivio di valori-chiave è una scelta appropriata per questo tipo di dati?
In termini di memorizzazione dei dati dei tag per ciascuna immagine, poiché i tipi di tag sono sconosciuti in anticipo, sto cercando di sfruttare la natura schemaless di NOSQL e di utilizzare sia l'archivio dati dei documenti che un profilo colonna uno. Quali sarebbero i fattori chiave nel decidere quale tipo di negozio utilizzare? Ci sono altre opzioni che dovrei prendere in considerazione?
Infine, ha senso dividere i dati dell'immagine e i metadati in negozi separati oppure esiste una tecnologia che può fare entrambe le cose? Forse qualcosa come un archivio di valori chiave che consente anche l'aggiunta di metadati e l'esecuzione di query sui metadati?
Aggiornamento: ho visto le risposte precedenti ma hanno pochi anni e non sembrano sfruttare le tecnologie contemporanee. Qualcuno può commentare se RDBMS + Filesystem è ancora il modo migliore per farlo o sono le sue soluzioni più recenti e migliorate.