Мы жертвуем доступностью, согласованностью и сложностью. Сначала ответьте на последний вопрос: имеет ли это значение? Да очень! Выбор в отношении того, как следует управлять вашими данными, является абсолютно фундаментальным, и не существует «передовой практики», позволяющей уклоняться от решений. Вы должны понимать свои особые требования.
Есть фундаментальное напряжение:
Один экземпляр: согласованность - это просто, но если что-то не так, все останутся без воды, а если люди находятся далеко, то они могут заплатить ужасные затраты на связь. Поднесите к картинке портативные устройства, которым, возможно, придется работать в автономном режиме, и одна копия не разрежет ее.
Главный-подчиненный: согласованность не так уж и сложна, потому что у каждой части данных есть ровно один хозяин-хозяин. Но что тогда делать, если этого мастера не видно, нужна какая-то отложенная работа.
Мастер-Мастер: ну, если вы можете заставить его работать, он, кажется, предлагает все, без единой точки отказа, каждый может работать все время. Проблема в том, что очень сложно сохранить абсолютную последовательность. См. Статью в Википедии для получения дополнительной информации.
В Википедии, кажется, есть хорошее резюме преимуществ и недостатков
преимущества
Если один мастер выходит из строя, другие мастера будут продолжать обновлять базу данных.
Мастера могут быть расположены на нескольких физических сайтах, т.е. распределены по сети.
Недостатки
Большинство систем репликации с несколькими ведущими являются непостоянно согласованными, то есть ленивыми и асинхронными, нарушающими свойства ACID.
Системы активной репликации сложны и вызывают некоторую задержку связи.
Такие проблемы, как разрешение конфликтов, могут стать неразрешимыми по мере увеличения количества задействованных узлов и уменьшения необходимой задержки.