Imitando "transações" no CouchDB

O CouchDB não suporta transações. Isso não é uma falha de design do banco, mas uma escolha em questão de escalabilidade, escolhendo Availability e Partition Tolerance em troca da Consistency do teorema CAP. O CouchDB é apenas eventualmente consistente.

A única consistência que o CouchDB garante são atualizações dentro de um mesmo documento. Qualquer modificação em mais de um documento ao mesmo tempo não pode ter garantia de consistência. Em outras palavras, a modificação de um documento pode falhar e a do outro funcionar. E isso não é um problema dependendo do software que você quer desenvolver.

Apesar disso, é possível simular consistência no CouchDB usando um padrão de projeto de software chamado Try-Confirm/Cancel (TCC).

Referêcias

Posso fazer transações no CouchDB?
https://stackoverflow.com/questions/299723/can-i-do-transactions-and-locks-in-couchdb

Artigo científico sobre o assunto
http://ws-rest.org/2014/sites/default/files/wsrest2014_submission_7.pdf

TCC aplicado ao REST
https://dzone.com/articles/transactions-for-the-rest-of-us

You should also read: