Разрешение конфликтов репликации полностью внутри CouchDB

Можно ли полностью разрешить конфликты, вызванные репликацией базы данных, в рамках CouchDB? Я знаю, что у него есть собственный внутренний алгоритм для принятия решения о том, какую версию использовать, но может ли приложение зарегистрировать пользовательскую функцию javascript для разрешения конфликтов специфичным для приложения способом?

Руководство CouchDB и вики, похоже, предлагают использовать внешний код приложения для разрешения конфликтов.


person nil    schedule 06.04.2011    source источник


Ответы (1)


Нет, невозможно разрешить конфликты автоматически (или каким-либо образом спровоцировать) в CouchDB.

Разрешать конфликты всегда должны разработчики, это правда.

В системе MVCC автоматическое разрешение конфликтов кажется неудобным. Зачем мы храним предыдущие версии и предоставляем неблокирующий доступ?

(Поправьте меня, если я ошибаюсь, пожалуйста)

person chris polzer    schedule 06.04.2011
comment
Мы согласны с тем, что разработчик должен решать, как лучше разрешать конфликты в приложении. Мой вопрос должен был быть о том, где находится эта логика разрешения конфликтов. Может ли это быть функция javascript, хранящаяся в CouchDB? - person nil; 07.04.2011
comment
+1, и я обновлю ваш ответ, чтобы не было больше ясности. Я согласен с nil: конфликты должен разрешать разработчик, а не пользователь. Dropbox и GMail — это две службы, которые, кажется, все время прозрачно разрешают конфликты. К сожалению, в настоящее время все это необходимо делать, подключаясь к дивану как обычный клиент. - person JasonSmith; 07.04.2011
comment
Спасибо, jhs, за разъяснение. Интересно, почему это невозможно. Это, безусловно, делает CouchApps, которые обслуживаются непосредственно из CouchDB, менее самодостаточными. - person nil; 08.04.2011