Атлас MongoDB и синхронизация в реальном времени из локальной базы данных

#mongodb #mongodb-atlas

#mongodb #mongodb-atlas

Вопрос:

У меня есть проект, который имеет следующие характеристики:

  • Локальная реплика MongoDB, установленная в локальной базе данных
  • Облачный экземпляр MongoDB в MongoDB atlas
  • Локальный MongoDB должен синхронизироваться с MongoDB atlas
  • Локальный экземпляр MongoDB может быть отключен несколько дней
  • После подключения к сети он должен начать синхронизацию с MongoDB atlas

В принципе, я ищу что-то похожее на Realm, за исключением того, что это решение работает на реальном локальном сервере, а не на мобильном устройстве.

Я изучил текущие миграции, см. Здесь . Но, похоже, это не совсем подходит для этого варианта использования, поскольку оно предназначено для возможного отключения, чего я не хочу.

Поэтому, как я могу достичь следующего с помощью MongoDB atlas? Чего мне не хватает?

Могу ли я относиться к MongoDB atlas, как к части моего локального набора реплик, и использовать стандартные возможности репликации MongoDB? Т.Е. Atlas всегда будет вторичным.

Комментарии:

1. Как atlas может быть «всегда вторичным», если ваш предварительный «всегда первичный» может отключиться на несколько дней? Кроме того, ни один набор реплик не допустит такого простоя для своих членов. Что-то вроде coachdb было бы более подходящим для этой работы.

2. Вы правы.. Означает ли это, что MongoDB не поддерживает этот вариант использования? Т.Е. Он не поддерживает регулярную синхронизацию данных с Atlas из локальной базы данных, которая меняется между автономным и онлайн.

3. Я сомневаюсь, что возможно иметь элементы набора реплик как в Atlas, так и в on-prem, даже если оба они всегда включены. Автономные участники — отдельная проблема. Как я уже сказал, в то время как механизм репликации couchdb и разрешение конфликтов предназначены для устранения длительных простоев для своих пользователей, Mongo больше ориентирован на производительность и низкую задержку. Пользователям, которые находятся в автономном режиме более 10 секунд, требуется полная процедура синхронизации «добавить участника в набор реплик», чтобы снова присоединиться к набору. В зависимости от размера вашей базы данных это может занять от нескольких секунд до нескольких часов и может привести к значительной нагрузке на сеть (подумайте о счетах AWS)

4. Верно, но опять же, когда вы упоминаете AWS, это большой плюс, что MongoDB доступен по всему миру. Кажется, что настроить это с помощью CouchDB не так просто. В любом случае, вы говорите, что если я хочу реплицировать данные с локального сервера MongoDB на MongoDB atlas, мне придется написать пользовательский код, чтобы позаботиться об этом. В то время как CouchDB создан для обеспечения этой репликации (независимо от того, как долго сервер был отключен)

5. Это верно. Просто чтобы было ясно, couch — это всего лишь один из вариантов, который мне приходит в голову. Мои 2 точки зрения: Mongo как база данных не предназначена для длительных автономных пользователей, а Atlas как управляемая служба БД не допускает внешних членов набора реплик. По крайней мере, не в качестве стандартного предложения. Попробуйте поговорить с их отделом продаж, если они могут предоставить предложение для такого требования.

Ответ №1:

Эта функциональность с собственным MongoDB Atlas невозможна. Вам нужно искать индивидуальное решение.