我有一台运行了大量自定义模块的ejabberd服务器。我有几个mnesia表,我知道这些可以很容易地在节点之间复制而根本不需要对代码进行任何更改。我想知道是否有与ets表类似的方式?
理想情况下,能够使用完全相同的mnesia和ets数据运行多台计算机,而不必将我的ets表转换为mnesia表是很好的。 (从而重写了大量的代码。)
虽然我有一个rpc:在每个节点的ets表上调用,但我不确定这会对性能产生什么影响。
如果有人有任何答案,请告诉我。
答案 0 :(得分:9)
不,ets表内容无法为您复制。
复制(和事务安全性)是mnesia数据库应用程序引入的功能,其实现使用ets用于ram_only表。
答案 1 :(得分:3)
你可以rpc:调用远端节点上的ets表。
但mnesia的重点在于解决您遇到的问题:复制
将代码转换为mnesia对未来是一项很好的投资。
虽然有风险,但您始终可以使用mnesia:ets()
来最小化代码更改。