Database 从不同节点访问分布式mnesia数据库
我有一个包含不同表的mnesia数据库 我希望能够从不同的Linux终端访问这些表 我有一个名为Database 从不同节点访问分布式mnesia数据库,database,erlang,distributed,mnesia,Database,Erlang,Distributed,Mnesia,我有一个包含不同表的mnesia数据库 我希望能够从不同的Linux终端访问这些表 我有一个名为add_record的函数,它接受一些参数,比如name和id。我希望能够在node1上调用add_record,在node2上调用add record,但我希望从不同的位置更新相同的表 我读了一些资料,唯一发现的是我应该使用(node2)。但不知何故,我无法访问表中的数据。我想您可能是指复制的表。假设您在节点:nodea@127.0.0.1使用-setcookie myookie,无论它是否在另一个
add_record
的函数,它接受一些参数,比如name
和id
。我希望能够在node1
上调用add_record
,在node2
上调用add record
,但我希望从不同的位置更新相同的表
我读了一些资料,唯一发现的是我应该使用(node2)。但不知何故,我无法访问表中的数据。我想您可能是指复制的
表。假设您在节点:nodea@127.0.0.1
使用-setcookie myookie
,无论它是否在另一个节点上复制,如果我想从另一个终端访问记录,那么我也必须在另一个终端中使用erlang,方法是创建一个节点,将该节点与我们的节点通过表连接(您确保它们都有相同的cookie),然后在远程节点上调用一个方法。
假设您想在节点上的模块mydatabase.erl
中使用方法add\u record
nodea@127.0.0.1
其中包含mnesia表,我打开linux终端,输入以下内容:
$ 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>
它应该显示远程终端中的所有内容。我建议您首先阅读本课程:然后您将能够看到复制的mnesia表是如何管理的。阅读该领域的整个教程
rpc:call('nodea@127.0.0.1',mnesia,info,[]).