Синхронизация данных CouchDB - PullRequest
0 голосов
/ 17 июня 2020

Я разрабатываю приложение TODO для себя. Сначала он должен быть отключен, поэтому синхронизация данных вскоре стала проблемой. Что касается моих поисков, CouchDB выполняет синхронизацию данных c (репликация) очень хорошо, но у меня здесь некоторая путаница.
Во-первых, я использую язык программирования Flutter и Dart, и нет никакого диванного клиента на Дарт. Для javascript существует PouchDB , который, по-видимому, делает синхронизацию данных c с удаленной базой данных автоматически c ( Я прав? ) насколько я знаю, я должен быть хорошим до go без какой-либо сторонней библиотеки, поскольку CouchDB поставляется с собственным HTTP API, я могу просто сохранить данные пользователя в виде файла JSON и просто синхронизировать c их с сервером CouchDB как документ ( Я прав? )
Еще одна путаница для меня заключается в том, что данные пользователя должны храниться как документ или я должен создать 1 базу данных для каждого пользователя (в другом слова разве диван синхронизирует базу данных или документ?) Так же повышает авторизацию. Пользователь, имеющий доступ к базе данных, имеет доступ ко всем документам. Я хочу ограничить каждого пользователя своими документами, не помещая другой API между диваном и приложением конечного пользователя.

1 Ответ

0 голосов
/ 18 июня 2020

Основным преимуществом pouchdb является наличие локальных баз данных, которые имеют API-интерфейсы, такие как couchdb, но присутствуют даже в автономном режиме, et c. Итак, если вы использовали pouchdb и хотите работать в автономном режиме, вам почти наверняка понадобятся базы данных для каждого пользователя на couchdb и синхронизация pouchdb <-> couchdb , et c. Но вы не можете использовать pouchdb без JS, и в зависимости от этого в веб-просмотре et c в значительной степени подорвет преимущества компиляции в собственный код вместо приложения на основе веб-просмотра.

Использование HTTP API напрямую и сохраняя локальный документ, вероятно, проще начать с того, что каждый пользователь будет хранить несколько простых вещей в виде дополнительных JSON в своем собственном пользовательском документе в _users. Вы всегда можете добавить базы данных для каждого пользователя позже. База данных _users является немного особенной в том смысле, что она дает каждому пользователю доступ для чтения к их собственному документу без необходимости предоставлять им доступ к другим пользовательским документам и полагается на документ проекта проверки для защиты важных полей, в то же время позволяя им редактировать свои данные.

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

Начиная с каждого пользователя имея свои личные данные в своих собственных _users do c, можно по-прежнему создавать базы данных для групп пользователей, где все пользователи в группе имеют общий доступ для чтения ко всем документам, но могут обновлять только те, которые они создали. БД для каждого пользователя на самом деле является лишь частным случаем такой базы данных, в которой группа сокращена до одного члена.

...