В настоящее время я оцениваю возможные решения проблемы:
Набор записей данных должен быть синхронизирован между несколькими клиентами, где каждый клиент может просматривать (или даже знать о существовании) подмножество данных. Каждый клиент "владеет" некоторыми элементами, и решение, которое еще может читать или изменять эти элементы, может быть сделано только владельцем. Чтобы еще больше усложнить эту ситуацию, каждый элемент (и каждая ревизия элемента) должен иметь уникальный идентификатор, равный для всех клиентов.
В то время как последнее похоже на идеальную задачу для CouchDB (и модель данных на основе документов будет полностью соответствовать моим потребностям), я не уверен, что подсистема аутентификации/авторизации CouchDB может справиться с этими требованиями: хотя это должно быть возможно для ограничения доступа к записи с помощью функций проверки достоверности, похоже, не существует способа авторизации доступа для чтения. Все решения, которые я нашел для этой проблемы, предлагают маршрутизировать все запросы CouchDB через прокси (или прикладной уровень), который обрабатывает авторизацию.
Итак, возникает вопрос: возможно ли реализовать уровень авторизации, который фильтрует запросы к базе данных, чтобы доступ предоставлялся только документам, доступным для запрашивающего клиента, и по-прежнему использовать механизм репликации CouchDB? Упрощенный, это будет своего рода "выборочная репликация", где реплицируются только некоторые из документов, а не вся база данных.
Я также был бы благодарен за указания относительно подробной информации о том, как работает репликация. Вики CouchDB и даже книга "Определенное руководство" не слишком конкретны.