Domanda

C'è un modo per eseguire una serie di azioni non-atomiche su server di MongoDB (utilizzando il driver Ruby) come singola azione atomica? Quello che mi serve è fondamentalmente un blocco su certo oggetto / collezione.

È stato utile?

Soluzione

Non c'è modo di farlo nel driver di Ruby, perché non c'è modo di farlo in MongoDB. Mongo supporta solo operazioni atomiche singolo documento. Quindi, fondamentalmente un inserto, aggiornare o cancellare di un unico documento avviene atomicamente, ma non operazioni in più documenti.

Si potrebbe essere in grado di falsificare una transazione tentando un manuale di "roll-back" in caso di errore. Un roll-back in questo caso sarebbe sostituire qualsiasi cambiamento dei valori precedenti. Ma che sta per manuale e non hanno le garanzie acido che si otterrebbe da maggior parte dei server SQL.

Altri suggerimenti

Poiché è possibile eseguire operazioni atomiche su singoli documenti, ci sono modi per simulare ciò che si desidera. Si veda questo articolo:

http://kylebanker.com/blog/2010/06 / 07 / mongodb-inventario-transazioni /

E per alcuni dei principi alla base delle idee lì, vedere questo:

http://www.eaipatterns.com/docs/IEEE_Software_Design_2PC.pdf

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top