Ont*_*nty 5 database erlang distributed mnesia
我有一个包含不同表的mnesia数据库.
我希望能够从不同的Linux终端访问表.
我有一个调用的函数add_record,这需要几个参数,说name和id.我想能够add_record打开node1和add record打开,node2但我想从不同的位置更新同一个表.
我读了几个来源,我发现的唯一一件事就是我应该使用net_adm:ping(node2).但不知何故,我无法从表中访问数据.
我假设你可能意味着replicated桌子.假设你在节点上有你的mnesia表:nodea@127.0.0.1with ,无论它是否在另一个节点上复制,如果我想从另一个终端访问记录,那么我必须在另一个终端中使用erlang,同时创建一个节点,连接这个使用表的节点到节点(确保它们都具有相同的cookie),然后在远程节点上调用方法.假设您想在具有mnesia表的节点上使用模块中的方法,我打开一个linux终端并输入以下内容:-setcookie mycookieadd_recordmydatabase.erlnodea@127.0.0.1
$ erl -name remote@127.0.0.1 -setcookie mycookie
Eshell V5.8.4 (abort with ^G)
1> N = 'nodea@127.0.0.1'.
'nodea@127.0.0.1'
2> net_adm:ping(N).
pong
3> rpc:call(N,mydatabase,add_record,[RECORD]).
{atomic,ok}
4>
使用此模块(rpc),如果使用相同的cookie连接两个节点,则可以调用远程节点上的任何方法.首先在远程节点上调用此方法:
rpc:call('nodea@127.0.0.1',mnesia,info,[]).
它应该显示远程终端中的所有内容.我建议您可能首先阅读本讲座:分布式Erlang编程,然后您将能够看到如何管理复制的mnesia表.浏览该域上的整个教程.