什么是Mnesia复制策略?

时间:2013-09-24 16:21:59

标签: erlang mnesia

  1. Mnesia使用什么策略来定义哪些节点将存储特定表的副本?
  2. 我可以强制Mnesia为每张桌子使用特定数量的副本吗?这个数字可以动态改变吗?
  3. 是否有任何来源(除了源代码)以及Mnesia内部算法的详细(不仅仅是概述)描述?

1 个答案:

答案 0 :(得分:4)

  1. 手册。您负责指定复制的位置。
  2. 是的,如上所述,手动。这可以动态更改。
  3. 我害怕(虽然可能是错的)除了源代码之外没有。 在文档方面,整个Erlang发行版几乎不是领导者 在软件世界里。
  4. Mnesia不会自动管理给定表的副本数。 您负责指定将存储表副本的每个节点(因此它们的编号)。然后可以是副本:

    • 存储在内存中,
    • 存储在磁盘上,
    • 存储在内存和磁盘上,
    • 未存储在该节点上 - 在这种情况下,该表将可访问,但数据将根据需要从其他某些节点获取。

    在系统运行时可以重新配置复制策略,但要动态执行(例如,基于节点关闭事件),您必须自己提出解决方案。

    Mnesia系统事件可用于发现节点发生故障时的情况;如果您知道该节点上存储了哪些表,您可以根据仍在线的节点检查其在线副本的数量,然后根据需要执行复制。

    我不知道任何已经管理过这种东西的应用程序/库,它似乎是一个相当高级的(从我的角度来看,至少)努力制作一个。

    但是,Riak是一个数据库,它可以透明地管理用户之间的数据分布,并且可以根据您提到的选项进行配置。这可能是你的选择。