Репликация базы данных на пользователя с помощью couchdb - PullRequest
5 голосов
/ 04 ноября 2011

У меня есть приложение, которое будет содержать информацию, чувствительную к пользователю. Из того, что я могу сказать, я должен использовать базу данных для каждой пользовательской архитектуры. Я хотел бы, чтобы база данных каждого пользователя (потенциально на стороне клиента) реплицировалась в базу данных, расположенную на общедоступном сервере, и позволяла пользователям получать доступ к приложению с любого устройства, чтобы пользователь мог войти в систему на этом устройстве, некоторые базы данных будут обнаружены средний уровень на общедоступном сервере, а затем реплицируется на стороне клиента, и происходит синхронизация между устройством и общедоступным сервером.

Кажется, это то, для чего CouchDB хорош (основываясь на моем поиске в Google), но есть ли примеры приложений, которые делают то, что я описываю (или близко к этому)? Я использую couchdb 1.1.0.

1 Ответ

8 голосов
/ 16 ноября 2011

Да, CouchDB отлично подходит для этого - благодаря простому протоколу он отлично подходит для веб-приложений [даже в автономном режиме, см. pouchdb ] и мобильных / настольных приложений [снова даже в автономном режиме, см. Couchbase Mobile .

К сожалению, я не знаю большого публично доступного примера уровня кода, но основная идея состоит в том, чтобы использовать комбинацию отфильтрованной репликации и проверки документов:

Основная идея заключается в том, что для вашей серверной копии пользовательской базы данных у вас установлены функции проверки, чтобы обеспечить соблюдение требуемых схем документов и контроля доступа. Конечный пользователь получает реплику этой базы данных, которую можно использовать для доступа с низкой задержкой и автономного доступа - теоретически они могут подорвать свою копию, но при репликации обратно функция проверки предотвратит повреждение базы данных на стороне сервера.

Вы даже можете настроить основную базу данных, которая не является общедоступной, а затем использовать отфильтрованная репликация для синхронизации данных каждого пользователя с серверными базами данных на стороне пользователя - полезно для централизованного обмена сообщениями, агрегированной статистики, требуется только резервное копирование одной базы данных и т. д.

В этой статье «Новые функции в репликации» есть еще несколько примеров высокого уровня, особенно разделы примеров использования «DesktopCouch» и «Обмен данными на основе необходимости». .

ОБНОВЛЕНИЕ (2015/03/10) : я больше не рекомендую использовать фильтрованную репликацию CouchDB, как описано выше. Существует несколько проблем с производительностью и масштабируемостью (если не с проблемами надежности), возникающих при попытке реплицировать более нескольких отфильтрованных каналов из центральной базы данных. Вы можете попробовать Couchbase и его Sync Gateway , если вам нужны разрешения на чтение на уровне документа, или создать собственные изменения для каждого пользователя представления (защищенные пользовательским промежуточным ПО) с использованием _local_seq.

...