Поддерживает ли MNesia синхронизацию после отключения? - PullRequest
4 голосов
/ 18 февраля 2011

Я начинаю проектировать проект с учетом следующих требований:

  • Общая система будет распределена по нескольким физическим узлам в глобальной сети
  • Каждый узел будет использовать иманипулирование общим набором записей данных
  • Операции над этими записями должны быть устойчивыми к перебоям в сети

Я рассматриваю возможность использования Mnesia / Erlang в качестве базовой платформы для этого проекта, но яХотелось бы узнать, насколько хорошо он (Mnesia) может обрабатывать одновременные отключенные конфликтующие операции над набором данных.

Иллюстративный сценарий:

  1. Узлы A и B имеют возможность подключения и пустой набор данных.
  2. Узел A добавляет запись (1, ABC).
    • Здесь наборы записей должны прозрачно синхронизироваться, и теперь узел B также имеет запись (1, ABC).
  3. Сетевое соединение между ними потеряно.
  4. Узел A изменяет запись на (1, DEF).
  5. Узел B (более поздняя временная метка) изменяет запись на (1, GHI).
  6. Восстановление сетевого подключения
    • Ожидается: после прозрачной синхронизации оба узла содержат запись (1, GHI).

Для упрощения предположим, что полная история изменений не требуется (например,не важно, что запись 1 раньше содержала ABC или DEF, важно только, чтобы она теперь содержала GHI).

Это стандартная (или тривиальная для реализации) возможность Mnesia?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2011

Ульф Вигер выступил на прошлой конференции в Эрланге в Сан-Франциско (2010) с этой темой.Вы можете найти его слайды здесь: http://www.erlang -factory.com / upload / item / 7 / UlfWiger-10minutetalk.pdf

Они содержат обзор проблем, а также ссылки на некоторые из них.исходный код, который может быть вам полезен.

2 голосов
/ 18 февраля 2011

Шаги 1-5 должны работать. Автоматическое разрешение конфликтов (шаг 6): нет.

...