> -- Valery Solovey писал(а):
> А если изменения выполнятся одновременно на двух разных серверах? Не то, чтобы это нельзя было учесть при реализации, но эффективность БД может серьёзно упасть.
Это одна из проблем. Делал несколько экспериментов, но ничего толкового не получилось

Пока остановился на варианте когда для записей-блоков рассчитываются  хеш-сумы. Если меняется блок, то машины А посылает соседним машинам (Б, В) сообщение с двумя хеш-сумами: старой и новой. Если у соседа есть блок со старой хеш-суммой или нет в БД ни одного блока с указанными хешами, то он запрашивает данный блок и заменяет/вставляет его в БД. Если есть с новой - ничего не делает.

Но проблема, в том что вставка\изменение генерирует сообщение об изменении, что приводит к повторному запросу уже к машине А. А если в этот момент этот же блок на машине А уже изменился, то получаем не нужный дубликат и ... новое сообщение об изменении. Система получается не устойчивой.

Как решение этой проблемы - разделение сообщений на модификацию БД из-вне и модификацию при синхронизации. Но все равно, толком не работает.