Ho un sito Web in esecuzione su un server di produzione, supportato da mongodb. Ogni ora o giù di lì, diventano disponibili alcuni nuovi dati che voglio aggiungere al db, inserire nuovi documenti e aggiornare quelli vecchi.
Ottengo i nuovi dati su un server di sviluppo e aggiorno la copia del db del server di sviluppo. Se tutto sembra a posto, voglio inviare le nuove informazioni al db di produzione, in modo che la produzione ora assomigli al db di dev. Se i test falliscono, non inviare modifiche alla produzione fino al loro superamento. Le modifiche che ho in mente non sono modifiche dello schema, ma solo nuovi valori per vecchi campi e nuovi documenti con gli stessi campi degli altri.
Diverse opzioni mi vengono in mente per come farlo.
- Con ogni aggiornamento, fai
{$set: {data_field: new_value, modified: ISODate()})
e quindi copia tutto con modified
appropriato alla produzione.
-
Ad ogni aggiornamento, scrivi il comando di aggiornamento in un log, quindi esegui tutti questi comandi in produzione.
-
Ad ogni aggiornamento, coda l'oplog ed esegui tutti i comandi nell'aggiornamento in produzione.
Tutti questi approcci sono comuni? Mi piacerebbe renderlo il più semplice possibile nella pratica standard. Come posso decidere tra questi metodi?