Запрос на обратную связь: настройка Couchdb с репликацией клиента (pouchdb) для нескольких пользователей / учетных записей

Прежде чем приступить к разработке, я хотел бы получить отзывы об изменении, которое я собираюсь внести, перейдя от монго к дивану.

В основном у меня есть веб-приложение, которое используется для организации действий пользователей (список задач, календарь, заметки, журнал). В настоящее время он использует mongodb, но я думаю переместить его на диван, в основном из-за возможности репликации диванов и взаимодействия clientdb (pouchdb). У меня есть аналогичная домашняя установка в браузере с использованием localstorage, поддерживаемая mongo, но я ищу более зрелое решение.

Из-за того, как couchdb отличается от mongodb, я думаю, что у каждого пользователя должен быть свой собственный couch db, и их документы являются каждым из моих компонентов приложения. В основном мне приходится перемещать все на уровень выше с диваном из-за локальной репликации БД и из-за безопасности.

У меня 3 вопроса.

1) Я предполагаю, что на диване нет защиты / аутентификации на уровне документа, верно? (Следовательно, я перемещаю активы каждого пользователя в их собственную базу данных, хорошая идея?)

2) Мой план состоит в том, чтобы пользователи входили на веб-сайт, затем мой внутренний код nodejs аутентифицирует их и отправляет им некоторый токен аутентификации / сеанса. Затем javascript на клиенте использует свои локальные данные pouchdb для настройки, а также отправляет запрос репликации непосредственно на сервер couchdb (используя токен аутентификации, полученный от моего серверного процесса). У них должен быть доступ только к своей базе данных, так как я могу выполнять авторизацию для каждой базы данных (правильно?) Что вы думаете об этой настройке? Он должен работать?

3) Что касается поставщиков услуг couchdb, почему они так сильно различаются в своей версии для дивана? IE, happycouch, 1.6.1, iris 1.5, мутный, 1.0.2? И еще я слышал о том, что скоро выйдет couchdb 2.0 ... Я бы хотел использовать cloudant, но 1.0.2 - это так много версий от 1.6 или 1.5, если я не делаю ничего экзотического, имеет ли это значение?

Бонусный вопрос: p Продолжая последний вопрос, знаете ли вы о каких-либо службах, на которых размещается node.js и есть ли локальные экземпляры couchdb? Я хотел бы использовать код моего внутреннего сервера в качестве прокси, но не за счет другого сетевого перехода.

Большое спасибо за ваш отзыв, Пол


person paultman    schedule 28.01.2015    source источник


Ответы (1)


Из-за того, как couchdb отличается от mongodb, я думаю, что у каждого пользователя должен быть свой собственный диван db

Это лучшая практика CouchDB. Хороший выбор.

Я предполагаю, что на диване нет защиты / аутентификации на уровне документов, верно? (Следовательно, я перемещаю активы каждого пользователя в их собственную базу данных, хорошая идея?)

Вы правы: https://github.com/nolanlawson/pouchdb-authentication

Мой план состоит в том, чтобы пользователи заходили на сайт ...

Ага. Вы можете просто передать заголовки файлов cookie прямо из Node.js в CouchDB, и все будет нормально. В nano есть несколько документов о том, как это сделать: https://github.com/dscape/nano#using-cookie-authentication

Что касается поставщиков услуг couchdb, почему они так сильно различаются по версии для дивана?

Сообщество Couch - это одна большая счастливая разрозненная семья. :)

Я бы хотел использовать cloudant, но 1.0.2 - это так много версий от 1.6 или 1.5, если я не делаю ничего экзотического, имеет ли это значение?

1.0.2 относится к тому моменту, когда Cloudant разветвил CouchDB. С тех пор они добавили так много своих собственных функций, что теперь они в значительной степени эквивалентны функциям.

Самая большая разница между различными реализациями Couch заключается в аутентификации. Все (Cloudant, CouchDB, Couchbase) делают это по-своему.

person nlawson    schedule 30.01.2015
comment
Спасибо за отзыв, Нолан. Я собираюсь проверить, как использовать nano с Nodejs. Можете ли вы порекомендовать использовать cloudant или couchdb (например, от iris)? - person paultman; 01.02.2015
comment
Я не был уверен в доступе к клиентской базе данных. После аутентификации из моего бэкэнд-кода nodejs вы рекомендуете по-прежнему проксировать мой экземпляр nodejs для всего клиента на активность couchdb (через express / nano) или просто загружать клиентские запросы с некоторым типом информации cookie / auth и заставлять их напрямую разговаривать с экземпляр couchdb (минуя мой сервер nodejs). - person paultman; 01.02.2015
comment
Это примерно 6 из одного, полдюжины другого. Я бы, вероятно, проксировал его, чтобы иметь немного больше контроля над тем, к каким частям CouchDB API имеют доступ мои пользователи. - person nlawson; 02.02.2015
comment
Хороший момент, Нолан, это также позволило бы мне разумно распределять запросы между различными поставщиками услуг couchdb или локально для приоритетных пользователей. - person paultman; 05.02.2015
comment
Привет, Нолан, я немного отвлекся, но теперь я вернулся к этой миграции. Быстрый вопрос, я буду использовать pouchdb (большое спасибо за абстрагирование этого уровня на клиенте;) и на бэкэнде, который вы рекомендуете, couchdb или couchbase, для общения с моими клиентскими экземплярами pouchdb? - person paultman; 26.04.2015
comment
PouchDB совместим с обоими, но наши тесты в настоящее время показывают лучшую совместимость с CouchDB. - person nlawson; 27.04.2015
comment
Спасибо за это, я решил попробовать поработать с Cloudant после того, как много читал об их слиянии bigcouch. Я понимаю, что вы имеете в виду, говоря о вариантах обработки безопасности, я дам вам знать, как это происходит :) - person paultman; 28.04.2015
comment
Так как же все прошло? - person Lyn Headley; 06.09.2016