Che aspetto ha l'architettura di distribuzione? Sono un po 'confuso quando dici "server multipli" - intendi più istanze mongod? Inoltre, è un po 'di confusione quando si specificano i requisiti. In base al requisito 1, se si carica su S3, il file gridfs deve essere rimosso. Tuttavia, in base alle vostre esigenze, non può esistere sia in S3 che in Gridfs, quindi il requisito 2 sembra essere in contraddizione con il primo, cioè, non dovrebbe esistere in gridfs in primo luogo. Stai conservando alcuni file sia su Gridfs che su S3?
Se si sta eseguendo un set di repliche o un cluster più grande, è possibile creare un tailable cursor nella raccolta griglia (è possibile farlo anche su un singolo nodo, sebbene non sia consigliato). Quando vedi un'operazione di inserimento (sembrerà "op": "i") potresti eseguire uno script o fare qualcosa nella tua applicazione per prendere il file da gridfs e spingere il file appropriato in s3. Allo stesso modo, quando vedi un'operazione di cancellazione ('op': 'd') potresti cancellare in modo sommario il file da s3.
La bellezza di un cursore tessibile è che consente operazioni asincrone: è possibile avere un altro processo per monitorare l'oplog su un server diverso ed eseguire le azioni appropriate.
fonte
2013-08-01 21:20:02
Non sono sicuro, ma vedi se [questo] (http://stackoverflow.com/questions/17871568/rails-3-paperclip-can-i-store-images-both-on-s3-locally/17893929#17893929) help – Viren