Я начинаю проектировать проект с учетом следующих требований:
- Общая система будет распределена по нескольким физическим узлам в глобальной сети
- Каждый узел будет использовать иманипулирование общим набором записей данных
- Операции над этими записями должны быть устойчивыми к перебоям в сети
Я рассматриваю возможность использования Mnesia / Erlang в качестве базовой платформы для этого проекта, но яХотелось бы узнать, насколько хорошо он (Mnesia) может обрабатывать одновременные отключенные конфликтующие операции над набором данных.
Иллюстративный сценарий:
- Узлы A и B имеют возможность подключения и пустой набор данных.
- Узел A добавляет запись (1, ABC).
- Здесь наборы записей должны прозрачно синхронизироваться, и теперь узел B также имеет запись (1, ABC).
- Сетевое соединение между ними потеряно.
- Узел A изменяет запись на (1, DEF).
- Узел B (более поздняя временная метка) изменяет запись на (1, GHI).
- Восстановление сетевого подключения
- Ожидается: после прозрачной синхронизации оба узла содержат запись (1, GHI).
Для упрощения предположим, что полная история изменений не требуется (например,не важно, что запись 1 раньше содержала ABC или DEF, важно только, чтобы она теперь содержала GHI).
Это стандартная (или тривиальная для реализации) возможность Mnesia?