Мы разработали приложение Python / Django, которое хотим распространить среди клиентов, чтобы они могли запускать его локально (на виртуальной машине). Мы делаем это, чтобы они по-прежнему могли использовать приложение, если их подключение к Интернету прерывается, и оно просто «повторно синхронизируется» с основной базой данных в нашем DC.
Мы рассматривали репликацию MySQL / PostgreSQL, но у них, похоже, есть проблемы с автоматическим переключением при отказе, что является обязательным. Прямо сейчас у нас будет около 10-15 клиентов, использующих это программное обеспечение локально, но мы хотели бы иметь возможность масштабирования до гораздо большего. Как лучше всего это сделать (и с минимальными изменениями кода)?
Автономное использование и повторная синхронизация потребуют большого количества логики разрешения конфликтов - вероятно, не то, что вы бы хотели позволить встроенной репликации движка базы данных.
Вам все равно придется реализовать части разрешения конфликтов, но, возможно, посмотрите на распространяемую нереляционную базу данных (Mongo, Couch, Cassandra и т. Д.), Которая может немного лучше соответствовать тому, что вы пытаетесь сделать, и позволить вам увернуться. написание всей логики репликации с нуля.