Синхронизация мульти мастеринга с MongoDB - PullRequest
0 голосов
/ 11 января 2019

Сценарий использования: В настоящее время у нас есть «офисы» в разных частях света с очень прерывистым доступом в Интернет. Иногда это здорово, но иногда это может продолжаться часами.

Сейчас мы используем CouchDB, у которого есть главная база данных в облаке, и у нас есть документы с office_id. Затем мы выполняем отфильтрованную синхронизацию со всеми этими «офисами», чтобы отправлять только те документы, которые имеют office_id и возраст которых меньше месяца.

С CouchDB вы можете редактировать эти документы и добавлять новые на автономный сервер CouchDB в этих офисах. В настоящее время у нас есть cron, который выполняет синхронизацию репликации с нашей основной базой данных в облаке каждые 5 минут или около того.

Проблема: Хотя CouchDB действительно упрощает синхронизацию, я боюсь некоторых проблем с масштабируемостью в CouchDB. Пока не стало слишком поздно, я пытаюсь изучить различные возможности баз данных и способы, которыми я мог бы это сделать.

Amazon, кажется, удваивает свое предложение DocumentDB , которое поддерживает MongoDB, поэтому мне любопытно:

Кто-нибудь делал синхронизацию с несколькими мастерами с MongoDB или с аналогом NoSQL? Буду очень признателен за любые идеи о том, как мне этого добиться.

Я не хочу входить в сценарий, где масштабирование ставит меня в угол.

1 Ответ

0 голосов
/ 13 января 2019

Amazon DocumentDB использует общее хранилище, которое совсем не то, что вам нужно, и не решает вашу проблему. MongoDB будет очень плохим выбором для вашего сценария, и репликация мастер-мастер - это действительно сложная проблема. CouchDB (как вы используете) - первое, что приходит на ум, но вы действительно должны искать эту явную функцию, если вы ищете замену. Также обратите внимание, что во многих установках с несколькими мастерами предполагается, что разделение происходит между мастерами, но клиенты по-прежнему могут подключаться ко всем или некоторым мастерам, что не в вашем случае, поскольку у клиентов имеется только один действительный мастер.

Другим вариантом будет создание вашей репликации самостоятельно с использованием системы очередей или аналогичной, но для этого потребуется еще больше инфраструктуры в каждом местоположении (поскольку проблема заключается в обрыве соединения с Интернетом), и это будет «просто», если разные офисы редко или никогда не редактируют одни и те же документы, потому что вручную приходится сталкиваться с проблемой слияния.

Вы не объясняете, что вас беспокоит масштабирование, но я не вижу, чтобы MongoDB или любая другая база данных NoSQL имела такие отличные черты масштабируемости, как CouchDB.

РЕДАКТИРОВАТЬ: На самом деле вы ищете оптимистической репликации (или Lazy Replication, возможной последовательности)

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