【发布时间】:2013-09-29 23:40:06
【问题描述】:
- Mnesia 使用什么策略来定义哪些节点将存储特定表的副本?
- 我可以强制 Mnesia 为每个表使用特定数量的副本吗?这个数字可以动态更改吗?
- 是否有任何来源(除了源代码)对 Mnesia 内部算法进行了详细(不仅仅是概述)描述?
【问题讨论】:
【问题讨论】:
Mnesia 不会自动管理给定表的副本数。 您负责指定将存储表副本的每个节点(因此它们的编号)。那么副本可能是:
可以在系统运行时重新配置复制策略,但要动态执行(例如基于节点关闭事件),您必须自己提出解决方案。
Mnesia 系统事件可用于发现节点宕机的情况;如果您知道该节点上存储了哪些表,您可以根据仍然在线的节点检查其在线副本的数量,然后在需要时执行复制。
我不知道有任何应用程序/库已经管理了这类东西,而且这似乎是一项相当高级的(至少从我的角度来看)努力。
但是,Riak 是一个数据库,它以对用户透明的方式管理其节点之间的数据分布,并且可以根据您提到的选项进行配置。这可能是适合您的方式。
【讨论】: