【问题标题】:What is Mnesia replication strategy?什么是 Mnesia 复制策略?
【发布时间】:2013-09-29 23:40:06
【问题描述】:
  1. Mnesia 使用什么策略来定义哪些节点将存储特定表的副本?
  2. 我可以强制 Mnesia 为每个表使用特定数量的副本吗?这个数字可以动态更改吗?
  3. 是否有任何来源(除了源代码)对 Mnesia 内部算法进行了详细(不仅仅是概述)描述?

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:
    1. 手册。您负责指定在何处复制内容。
    2. 是的,如上所述,手动。这可以动态更改。
    3. 恐怕(尽管可能是错误的)除了源代码之外没有其他内容。 就文档而言,整个 Erlang 发行版几乎不是领导者 在软件世界中。

    Mnesia 不会自动管理给定表的副本数。 您负责指定将存储表副本的每个节点(因此它们的编号)。那么副本可能是:

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

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

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

    我不知道有任何应用程序/库已经管理了这类东西,而且这似乎是一项相当高级的(至少从我的角度来看)努力。

    但是,Riak 是一个数据库,它以对用户透明的方式管理其节点之间的数据分布,并且可以根据您提到的选项进行配置。这可能是适合您的方式。

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多