Наша команда разрабатывает приложение, которое будет иметь веб- и мобильное развертывание. Мы также будем поддерживать местное использование в помещении для некоторых клиентов. Оперативное обещание необходимо из-за проблем с инфраструктурой в некоторых удаленных местах, где должна работать система. Мы используем mongodb.
Итак, наш архитектурный подход заключается в том, чтобы иметь общие коллекции для всех клиентов. Чтобы дифференцировать клиентов, все документы во всех коллекциях используют идентификатор customer_id
, как показано в следующем примере:
materials: {
_id: not_null(ObjectId),
name: not_null(String),
description: String,
createdAt: not_null(Long),
createdBy: not_null(ObjectId),
updatedAt: Long,
updatedBy: ObjectId,
customer_id: not_null(ObjectId)
}
Используя этот подход, мы будем иметь на наших облачных серверах все данные от всех клиентов, но мы должны иметь возможность синхронизировать c все записи из всех коллекций для данного customer_id
на локальном сервере.
Если настроено локально, приложение будет подключаться к локальному серверу и изменять данные локально. Эти данные будут синхронизироваться c в облаке, если доступно inte rnet. Таким же образом, если пользователь в облаке изменяет документ для данного клиента, локальный сервер синхронизируется при наличии соединения inte rnet.
Если соединения нет, все изменения выполняются локально / на inte rnet и синхронизируется после возвращения inte rnet.
Наш вопрос связан с инструментами для его поддержки.
- Можем ли мы настроить собственную репликацию или разделение на mongodb чтобы иметь такое поведение?
- Если нет, есть ли инструменты syn c для mongodb, которые могут нам помочь?