Erlang节点之间的ETS表

3
我有一个具有大量自定义模块的ejabberd服务器。我有多个Mnesia表格,我知道这些表格可以在不更改代码的情况下轻松地在节点之间复制。我想知道是否有类似的方法可以实现ETS表格?
理想情况下,最好能够同时在几台机器上运行,具有完全相同的Mnesia和ETS数据,而无需将我的ETS表格转换为Mnesia表格(从而重写很多代码)。
我曾想过为每个节点对ETS表格进行rpc:call,但我不确定这会对性能产生什么影响。
如果有人有任何答案,请告诉我。
2个回答

9
不,ets表格内容无法为您复制。
复制(和事务安全性)是mnesia数据库应用程序引入的功能,其实现使用ets来处理仅限ram的表格。

同意,这正是mnesia的用途,也是使用mnesia而不是ets的重要原因。 - psyeugenic

3

您可以在远程节点上对ets表进行rpc:call。

但是,mnesia的整个目的就是解决您遇到的问题:复制

将您的代码转换为mnesia是未来的良好投资。虽然有风险,但您总可以使用mnesia:ets()来最小化代码更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接