2015-02-05 10 views
8

Stiamo usando MongoDB. Nella nostra applicazione abbiamo bisogno di memorizzare più file per utente. La nostra applicazione verrà distribuita su AWS. Stavo pensando di utilizzare una delle seguenti opzioni per memorizzare i file -MongoDB - Memorizza i file nel DB o nella memoria esterna?

  1. Archiviare i file in MongoDB stesso. Sono consapevole del fatto che MongoDB ha una limitazione della dimensione massima del documento di 16 MB, ma molto probabilmente i nostri file non andranno oltre.
  2. Utilizzare GridFS di MongoDB per archiviare i file.
  3. Usa Amazon S3 per archiviare i file e i collegamenti a questi file verranno accarezzati in MongoDB.
  4. Utilizza file system locale/volumi EBS su AWS.

Quale di questi è un approccio migliore? In termini di prestazioni, scalabilità? Quale approccio sarà più scalabile? Voglio anche usare CDN per mettere in cache i file. La mia preferenza è per AWS S3, dato che posso usare CDN per mettere in cache i file, la mia archiviazione dei file sarà agnostica per DB. Inoltre, la dimensione del mio DB non aumenterà in modo significativo poiché sto memorizzando i file al di fuori del DB.

risposta

6

penso che le migliori opzioni qui sono GridFS e S3; Vorrei andare con quest'ultimo me stesso. Spingere il file su S3 e quindi memorizzare il nome del bucket e la chiave del file nel documento Mongo. A meno che la tua azienda o i requisiti di ricerca siano tali che tutti i dati debbano essere presenti nel documento, penso che questo sia il modo migliore per andare.

Ho usato questa soluzione in produzione e scala molto facilmente. L'impatto sulla tua raccolta Mongo è ridotto e non devi preoccuparti di memorizzare enormi quantità di dati. Basta memorizzare la chiave e lasciare che S3 si occupi di tutto ciò. Puoi sempre archiviarli da qualche altra parte in seguito, poiché il tuo sistema è abbastanza indipendente dall'archiviazione.

2

Per prima cosa utilizzerò solo il file system locale in modalità sviluppo, in produzione userò GridFS o Amazon S3.

Consente di mettere più chiare le parole.

Primo punto (Memorizzare i file in MongoDB sé.)

  1. se si sta gestendo le immagini piccole o meno grande come 16 MB è necessario memorizzare loro su vostre collezioni.

Contras

Ogni volta che si effettua una query, si deve sapere che si sta cercando in tutta la collezione, quindi ci vorrà un po '(si può escludere il settore 'immagini' per evitare questo.)

secondo punto (GridFS Usa MongoDB per memorizzare i file.)

  1. Se si sta gestendo le immagini più grandi di (1 6MB>)
  2. È possibile aggiungere metadati (mi piace questo).

Dai uno sguardo allo GridFs Docs.

This article talk about pros and cons about using GridFs volontà può essere helfup troppo

anche when should i use GridFS?

Terzo punto (Usa Amazon S3)

Im non molto familiare con S3 (non ho mai usato).

Ma questo è da docs Amazon when should i use Amazon S3?

S3 è libero di aderire, ed è un sevice pay-as-you-go, il che significa che solo mai pagare per qualsiasi dei costi di hosting e di larghezza di banda che si utilizza, che lo rende molto attraente per le aziende start-up, agili e snelle cercando di minimizzare i costi.

In cima a questo, il servizio completamente scalabile, veloce e affidabile fornito da Amazon, lo rende estremamente attraente per i produttori di video e di marketing in tutto il mondo.

Amazon offre S3 come sistema di hosting, con prezzi che dipendono dalla posizione geografica del datacenter in cui si archiviano i video.

Four Point (Usa file system locale)

io uso solo del file system quando im testare le mie applicazioni, non ho mai utilizzare che in produzione dal dal mio POV, non è così scalabile.

A mio parere personale vorrei utilizzare GridFS, ma io penso che si debba analizzare le esigenze della vostra applicazione, e quindi sapere quale Storage Adapter utilizzare

Problemi correlati