2009-11-22 40 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()來最小化代碼更改。