Структура базы данных MongoDB и синхронизация с несколькими записывающими устройствами и одним сервером сбора - PullRequest
0 голосов
/ 27 марта 2020

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

В настоящее время каждое из этих пользовательских устройств имеет свою собственную базу данных MongoDB mydb с одной коллекцией mycollection в которые он пишет свои документы. Пользовательское устройство может создавать, изменять и читать документы, а также удалять старые (чтобы ограничить размер БД).

Сейчас я внедряю инструмент анализа, который будет работать на сервере и нуждается в данные со всех этих устройств. Сервер не будет изменять существующие документы, созданные пользовательскими устройствами. Однако он создаст новые записи базы данных, которые относятся к документам, созданным пользовательскими устройствами (то есть ссылаются на _id из документа, созданного пользовательским устройством). На сервере я буду выполнять запросы для поиска по всем документам со всех пользовательских устройств.

У меня есть два вопроса:

Структура базы данных

Как мне структурировать базу данных ?

  • Если каждое пользовательское устройство записывает в коллекцию userDeviceN, и на сервере все эти коллекции будут находиться в одной и той же БД?
  • Если на сервере есть одна БД для каждого пользовательского устройства?
  • Должно ли все объединяться в одну коллекцию на сервере?

Синхронизация

Как синхронизировать документы, созданные пользовательскими устройствами, с сервер? Обратите внимание, что мне, возможно, придется синхронизировать изменения в документе, который уже был синхронизирован с сервером. Я не хочу синхронизировать c очистки, которые происходят на пользовательских устройствах

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...