Можно ли синхронизировать подмножество документов по определенному правилу? - PullRequest
0 голосов
/ 05 сентября 2018

У меня следующий сценарий проектирования БД, и мне интересно, смогу ли я реализовать его репликацию с использованием архитектуры PouchDB - CouchDB.

сценарий использования

У меня есть гибридное мобильное приложение, которое в настоящее время использует PouchDB в качестве локального постоянного слоя. После запуска каждого экземпляра приложения (AppI) создается документ PouchDB, в котором хранятся все AppI постоянные данные, например, имя пользователя, аватар и т. д. Только этот AppI отвечает за управление собственным экземпляром документа - DocI .

Теперь, в какой-то момент конкретный AppI может решить соединиться с другими / другими AppI - в этом случае эти AppIs будут обмениваться DocIs . Как только это произойдет, каждый AppI будет иметь свои собственные DocI для своих собственных данных и копии для всех DocI для всех других AppIs , которые решает поделиться своими данными с ним.

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

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

Требование

Теперь пришло мое требование и связанный с ним вопрос: Я хотел бы выполнить резервное копирование каждого DocI из соответствующего AppI в внутреннюю БД. В этом случае каждый DocI должен реплицироваться в документ БД внутреннего уровня. Если пользователь потерял устройство, замените его и затем решит установить приложение заново, он захочет восстановить свои данные из резервной копии DocI , т. Е. Из внутренней базы данных.

Моей первой мыслью было использование CouchDB в качестве бэкэнда как наиболее естественного решения для синхронизации PouchDB. Однако из того, что я прочитал (скажите, пожалуйста, если я ошибаюсь), я понимаю, что при синхронизации PouchDB и CouchDB они будут синхронизировать все, что означает, что в какой-то момент на каждом AppI у меня будет ВСЕ DocIs реплицируется - даже для тех AppIs , с которыми данный конкретный AppI не имеет соглашения об обмене данными.

Вопросы

Итак, мой главный вопрос - правильность приведенного выше предположения, то есть я не могу использовать PouchDB - репликация CouchDB И убедитесь, что я буду реплицировать ТОЛЬКО определенное подмножество DocIs на локальный PouchDB / AppI

Дополнительный вопрос - если предположение неверно, подскажите, пожалуйста, как это можно смоделировать с помощью пары PouchDB / CouchDB?

...