我开始构建一个具有以下要求的项目:
- 整个系统将分布在 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 的开箱即用(或实现微不足道)功能吗?