48 votes

Gestion des conflits causés par la réplication dans BigCouch

Le CouchDB Réplication et conflits La page wiki suggère d'utiliser _bulk_docs con all_or_nothing=true pour écrire de force de nouvelles versions de documents, même si cela introduit des conflits lors de l'écriture, mais qui sont résolus peu après lors des lectures suivantes. J'ai implémenté ceci et, conceptuellement, cela semble fonctionner correctement.

Mais BigCouch ne supporte pas all_or_nothing sémantique pour que les écritures dans les documents en vrac puissent renvoyer des résultats de conflit 409. Quelle est la meilleure pratique pour implémenter une résolution de conflit similaire au niveau de l'application pour les conflits introduits par la réplication dans BigCouch ? Devrais-je plutôt envisager une résolution des conflits au moment de l'écriture ?

1voto

user2254842 Points 25

Obtenir le numéro de révision du document à mettre à jour s'il y a un conflit pendant l'attachement et appeler récursivement en cas de conflit,

$url = "http://couchdb/DATABASE/DOCID/ATTACHMENTNAME?rev=$rev";
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_PUT, true );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_exec( $ch );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X