architecture - MNesia 是否支持断线操作后的同步?

标签 architecture synchronization erlang distributed mnesia

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

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

  • 我正在考虑使用 Mnesia/Erlang 作为这个项目的基础平台,但我想知道它(Mnesia)在数据集上处理同时断开的冲突操作的能力如何。

    一个说明性的场景:
  • 节点 A 和 B 具有连通性和空数据集。
  • 节点 A 添加记录 (1, ABC)。
  • 在这里,记录集应该透明地同步,现在节点 B 也有记录 (1, ABC)。
  • 它们之间的网络连接丢失。
  • 节点 A 将记录更改为 (1, DEF)。
  • 节点 B(稍后的时间戳)将记录更改为 (1, GHI)。
  • 网络连接已恢复
  • 预期:透明同步后,两个节点都包含记录(1,GHI)。

  • 为简化起见,我们假设不需要完整的更改历史记录(例如,记录 1 过去包含 ABC 或 DEF 并不重要,重要的是它现在包含 GHI)。

    这是 Mnesia 的开箱即用(或实现起来很简单)功能吗?

    最佳答案

    Ulf Wiger 上次在旧金山的 Erlang 工厂(2010 年)就这个话题进行了一次演讲。你可以在这里找到他的幻灯片:http://www.erlang-factory.com/upload/item/7/UlfWiger-10minutetalk.pdf

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

    关于architecture - MNesia 是否支持断线操作后的同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036101/

    相关文章:

    c# - 服务台票务系统 : Windows app vs web app

    node.js - 使用 Node.js 将 RESTful 服务与主要网站架构分离

    javascript - 使用 Ajax 时检查客户端和服务器的同步状态

    java - 如何对同步代码进行单元测试

    java - 同步速度与正常速度

    erlang - erlang 中的 hash_hmac

    syntax - 二郎 : variable 'Result' unsafe in 'try'

    design-patterns - DDD 应用服务中的 CRUD?

    list - 打印 Erlang 列表中的每个元素

    ios - Xcode UI 测试计划