Я работаю над проектом, в котором у меня есть несколько пользовательских устройств, которые создают данные для хранения в базе данных.
В настоящее время каждое из этих пользовательских устройств имеет свою собственную базу данных MongoDB mydb
с одной коллекцией mycollection
в которые он пишет свои документы. Пользовательское устройство может создавать, изменять и читать документы, а также удалять старые (чтобы ограничить размер БД).
Сейчас я внедряю инструмент анализа, который будет работать на сервере и нуждается в данные со всех этих устройств. Сервер не будет изменять существующие документы, созданные пользовательскими устройствами. Однако он создаст новые записи базы данных, которые относятся к документам, созданным пользовательскими устройствами (то есть ссылаются на _id
из документа, созданного пользовательским устройством). На сервере я буду выполнять запросы для поиска по всем документам со всех пользовательских устройств.
У меня есть два вопроса:
Структура базы данных
Как мне структурировать базу данных ?
- Если каждое пользовательское устройство записывает в коллекцию
userDeviceN
, и на сервере все эти коллекции будут находиться в одной и той же БД? - Если на сервере есть одна БД для каждого пользовательского устройства?
- Должно ли все объединяться в одну коллекцию на сервере?
Синхронизация
Как синхронизировать документы, созданные пользовательскими устройствами, с сервер? Обратите внимание, что мне, возможно, придется синхронизировать изменения в документе, который уже был синхронизирован с сервером. Я не хочу синхронизировать c очистки, которые происходят на пользовательских устройствах
Я смотрел в репликации, но он не подходит для этого, потому что он предназначен для одного мастера, который пишет, и серия рабов, которые хранят копии. У меня противоположная ситуация.