Управление доступом пользователя к документу для PouchDB / CouchDB

Я хочу использовать PouchDB - CouchDB для сохранения пользовательских данных для моего веб-приложения, но не могу найти способ контролировать доступ для каждого пользователя. Моя БД будет просто состоять из документов, использующих идентификатор пользователя в качестве ключа. Я знаю, что есть несколько решений:

  1. Одна база данных на пользователя - однако требуется отслеживать, когда новый пользователь хочет сохранить данные для создания новой БД, и может создавать много БД;

  2. Прокси между клиентом и CouchDB - однако я не хочу, чтобы PouchDB синхронизировал изменения для всей БД, включая документы других пользователей в этих запросах _all_docs, _revs_diff.

Есть ли какие-либо предложения по управлению доступом пользователей к pouchDB для базы пользователей около 1 миллиона (только активных пользователей около 10 тысяч)?


person konghou    schedule 18.05.2015    source источник
comment
PouchDB определенно не является хорошим выбором для 1M БД документов. Используйте CouchDB. Вы можете посмотреть на github.com/ermouth/covercouch — он реализует ACL для Couch, сохраняя исходный API нетронутым.   -  person ermouth    schedule 18.05.2015
comment
@ermouth covercoach выглядел очень интересно, но, к сожалению, заброшен. У вас есть идеи, куда пойти за чем-то подобным в 2017 году?   -  person oskarth    schedule 16.05.2017


Ответы (1)


В прошлом в списке рассылки поднималась тема миллиона или более баз данных. Вывод состоял в том, что это зависит от того, как ваша операционная система справляется с таким количеством файлов. CouchDB просто обращается к частям файла .couch по запросу. Производительность связана с тем, насколько быстро он может найти, открыть, получить доступ и закрыть этот файл.

Существуют хитрости для некоторых файловых систем, например, добавление разделителей / в имя базы данных, что заставит CouchDB хранить их в соответствующих структурах каталогов, таких как groupA/userA.couch, или использовать имена баз данных в стиле электронной почты com/bigbluehat/byoung.couch (или что-то подобное).

Если этого недостаточно, Apache CouchDB 2.0 добавляет код BigCouch (который IBM Cloudant использует) для предоставления CouchDB с автоматическим сегментированием. Это еще не сделано, но оно обеспечит масштабируемость между несколькими узлами с использованием системы сегментирования в стиле Amazon Dynamo.

Другой вариант — сделать собственное разделение на основе имени пользователя между несколькими серверами CouchDB или использовать IBM Cloudant (который создан для этого уровня масштабирования).

Все эти варианты обеспечивают один и тот же протокол репликации Apache CouchDB и прекрасно работают с PouchDB, установленным на пользовательском компьютере, телефоне или планшете.

Устройство пользователя будет иметь собственную базу данных +/- любые общие базы данных. Приложения на этих миллионах пользовательских устройств должны были заботиться только о масштабируемости своего собственного контента (так называемого пространства на жестком диске). Приложение будет реплицироваться непосредственно в пользовательскую базу данных на «облачной» стороне для резервного копирования, использования в Интернете и т. д.

Надеюсь, что-то там звучит многообещающе. :)

person BigBlueHat    schedule 28.08.2015
comment
Также хотел упомянуть проект couch-peruser, который теперь является частью проекта Apache CouchDB github.com/apache/ CouchDB-Peruser - person BigBlueHat; 28.08.2015