2012-07-01 11 views
47

Strona wiki CouchDB Replication and Conflicts sugeruje użycie _bulk_docs z all_or_nothing=true, aby wymusić pisanie nowych wersji dokumentów, nawet jeśli wprowadza to konflikty przy zapisie, ale następnie rozwiązać wkrótce po kolejnych odczytach. Zaimplementowałem to i koncepcyjnie wydaje się działać dobrze.Radzenie sobie z konfliktami powodowanymi przez replikację w BigCouch

Ale BigCouch nie obsługuje semantyki all_or_nothing, więc pisze do masowych dokumentów, które mogą zwrócić 409 wyników konfliktu. Jaka jest najlepsza praktyka w implementowaniu podobnego rozwiązywania konfliktów na poziomie aplikacji w przypadku konfliktów wprowadzanych przez replikację w BigCouch? Czy powinienem zamiast tego spojrzeć na rozwiązanie konfliktu czasu zapisu?

+0

**** świerszcze **** –

+0

Oops, I zadał pytanie, które nie dotyczyło C#. – akent

+0

To może być problem. Jeśli chcesz, możemy porozmawiać na czacie.SO [CouchDB and Couchbase] (http://chat.stackoverflow.com/rooms/11630/couchdb-and-couchbase) chat room. –

Odpowiedz

1

Get numer wersji dokumentu, aby być na bieżąco, jeśli istnieje konflikt podczas mocowania i rekurencyjnie zadzwonić w-przypadku konfliktu,

$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); 
+0

Nie jestem pewien, jakie załączniki mają z tym wspólnego. To nie wygląda na rozwiązanie dla mnie. – akent