2009-11-22 39 views
3

我有一个运行大量定制模块的ejabberd服务器。我有几个mnesia表,我知道这些可以很容易地在节点之间复制,根本不需要修改代码。我想知道是否有与ets表类似的方式?节点之间的Erlang Ets表

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

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

如果有人有任何答案,请让我知道。

回答

9

不,不能为您复制ets表格内容。

复制(和事务安全)是mnesia数据库应用程序引入的功能,其实现使用ets for ram_only表。

+0

同意,这正是mnesia的目的,也是使用mnesia代替ets的一个重要原因。 – psyeugenic

3

你可以rpc:调用远端节点上的ets表。

但是Mnesia的整点是固定你正在运行到这样的问题:复制

你的代码转换为Mnesia的是对未来的良好的投资。 尽管存在风险,但您始终可以使用mnesia:ets()来最小化代码更改。