【问题标题】:Erlang Ets tables between Nodes节点之间的 Erlang Ets 表
【发布时间】:2010-12-19 04:04:18
【问题描述】:

我有一个运行大量自定义模块的 ejabberd 服务器。我有几个 mnesia 表,我知道这些表可以很容易地在节点之间复制,而无需对代码进行任何更改。我想知道 ets 表是否有类似的方法?

理想情况下,如果能够让多台机器运行完全相同的 mnesia 和 ets 数据,而不必将我的 ets 表转换为 mnesia 表,那就太好了。 (因此重写了大量的代码。)

虽然我曾经对每个节点的 ets 表执行 rpc:call,但我不确定这会对性能产生什么影响。

如果有人有任何答案,请告诉我。

【问题讨论】:

    标签: erlang nodes ejabberd mnesia


    【解决方案1】:

    不,无法为您复制 ets 表内容。

    复制(和事务安全)是 mnesia 数据库应用程序引入的特性,它的实现使用 ets 用于 ram_only 表。

    【讨论】:

    • 同意,这正是 mnesia 的用途,也是使用 mnesia 而不是 ets 的重要原因。
    【解决方案2】:

    您可以 rpc:call 远程节点上的 ets 表。

    但 mnesia 的重点在于解决您遇到的问题:replication

    将您的代码转换为 mnesia 是对未来的一项良好投资。 虽然有风险,但您始终可以使用 mnesia:ets() 来最大限度地减少代码更改。

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 2011-02-17
      • 2016-06-03
      • 2012-10-14
      • 2016-09-10
      • 2021-01-19
      • 2016-10-27
      • 2010-12-30
      • 2011-08-11
      相关资源
      最近更新 更多