Я задавал этот вопрос несколько раз в списках рассылки couchdb, но так и не получил ответа.
Есть ряд вещей, которых отсутствует couchdb.
Одним из них является защита на уровне документа, которая:
- позволяет только определенным пользователям просматривать документ
- фильтровать документы, проиндексированные в представлении пользователяуровень разрешений базы
Я не думаю, что есть решение вопросов разрешения с текущей реализацией couchdb.
Одним из решений было бы использование внешнего инструмента индексирования, такого как luceneи пометьте свои документы правами пользователя, а затем выполните запрос lucene с определением прав пользователя, чтобы получить документы.Это также подразумевает дополнительную нагрузку на ваш сервер (ы) (lucene требует JVM) и дополнительную задержку для доступности данных (время индексации lucene ...)
Что касается решения для нескольких баз данных, то здесь естьРеализации языковой инфраструктуры, которые просто не позволяют использовать более одной базы данных (например, couch_potato для Ruby).
Наличие нескольких баз данных также означает, что у вас будет несколько процессов репликации, если ваши базы данных реплицируются.
Также это означает, что представления будут обновляться для каждой базы данных.В некоторых случаях это лучше, чем индексировать огромные представления в одной базе данных, но это также означает, что отдельные пользователи могут не обновлять информацию об одном источнике информации (т. Е. Некоторые обновят свои представления, другие - нет).Таким образом, вы не можете гарантировать, что данные согласованы для всех пользователей.
Поэтому, если что-то не реализовано в ядре кушетки для управления авторизацией на уровне документов, CouchDB не подходит для управления данными с ограничениями конфиденциальности.