Selektywna replikacja za pomocą CouchDB

Obecnie oceniam możliwe rozwiązania poniższego problemu:

Zestaw wpisów danych musi być zsynchronizowany między wieloma klientami, gdzie każdy klient może tylko przeglądać (lub nawet wiedzieć o istnieniu) podzbiór danych. Każdy klient „jest właścicielem” niektórych elementów, a decyzja, kto jeszcze może odczytać lub zmodyfikować te elementy, może zostać podjęta tylko przez właściciela. Aby jeszcze bardziej skomplikować tę sytuację, każdy element (i każda wersja elementu) musi mieć unikalny identyfikator, który jest równy dla wszystkich klientów.

Chociaż to ostatnie brzmi jak idealne zadanie dla CouchDB (a model danych oparty na dokumencie idealnie pasowałby do moich potrzeb), nie jestem pewien, czy podsystem uwierzytelniania / autoryzacji CouchDB może obsłużyć te wymagania: Chociaż powinno być możliwe ograniczenie zapisu dostęp za pomocą funkcji walidacji, wydaje się, że nie istnieje sposób autoryzacji dostępu do odczytu. Wszystkie rozwiązania, które znalazłem dla tego problemu, sugerują kierowanie wszystkich żądań CouchDB przez proxy (lub warstwę aplikacji), która obsługuje autoryzację.

Zatem pytanie brzmi: czy możliwe jest zaimplementowanie warstwy autoryzacji, która filtruje żądania do bazy danych, tak aby dostęp był przyznawany tylko dokumentom, do których żądający klient ma dostęp do odczytu i nadal korzysta z mechanizmu replikacji CouchDB? Uproszczony byłby to rodzaj „selektywnej replikacji”, w której replikowane są tylko niektóre dokumenty, a nie cała baza danych.

Byłbym również wdzięczny za wskazówki dotyczące szczegółowych informacji na temat działania replikacji. Wiki CouchDB, a nawet książka „Definite Guide” nie są zbyt szczegółowe.

questionAnswers(4)

yourAnswerToTheQuestion