断开连接后MNesia是否支持同步?

时间:2011-02-17 23:41:29

标签: architecture synchronization erlang distributed mnesia

我开始构建一个具有以下要求的项目:

  • 整个系统将分布在WAN上的多个物理节点上
  • 每个节点将使用和操作一组通用的数据记录
  • 对这些记录的操作必须能够适应网络中断

我正在考虑使用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)。
  7. 为了简化,我们假设不需要完整的更改历史记录(例如,记录1用于包含ABC或DEF并不重要,它现在只包含GHI,这一点非常重要。)

    这是Mnesia的开箱即用(或无法实现)功能吗?

2 个答案:

答案 0 :(得分:5)

Ulf Wiger在旧金山(2010年)就该主题进行了最后一次关于Erlang工厂的讨论。你可以在这里找到他的幻灯片:http://www.erlang-factory.com/upload/item/7/UlfWiger-10minutetalk.pdf

它们包含问题的概述,以及可能对您有用的一些源代码的指针。

答案 1 :(得分:2)

步骤1-5应该有效。自动冲突解决(步骤6):否。