I wouldn't say a two-phase commit is clumsy. It's needed in SQL Server if you want transactions across multiple databases.
>I did say 'less need' not 'no need' :-}
>But an 'entity' can be self-contained. e.g. One 'customer' record' might contain an array of 'orders', each of which contains an array of 'orderitems' and writing a new order back is one atomic action - so no danger of the 'order' being saved without the 'orderitems'.
>
>OTOH, if you wanted to update the stock levels for the products at the same time that would require a transaction. In those circumstances it's up to you to, for example, roll back the order if the product update fails.....
>
>MongoDB does handle transactions (but in a somewhat clumsy fashion) :
http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer