Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang Mnesia:以{local_content,true}模式读取远程节点数据_Erlang_Mnesia - Fatal编程技术网

Erlang Mnesia:以{local_content,true}模式读取远程节点数据

Erlang Mnesia:以{local_content,true}模式读取远程节点数据,erlang,mnesia,Erlang,Mnesia,是否有一种方法可以使用mnesia进行本地写入和全局读取(无需复制)。例如:节点A向其本地数据库写入数据,节点B从节点A的数据库读取数据。 除了本地存储的模式信息之外,节点B没有自己的任何数据 根据文档,{local_content,true}似乎是我需要使用的,但是我尝试让节点B读取节点A的数据失败 我的架构和表配置如下所示: 在nodeA@ip1: net_adm:ping('nodeB@ip2'). rd(user, {name, nick}). mnesia:cr

是否有一种方法可以使用mnesia进行本地写入和全局读取(无需复制)。例如:节点A向其本地数据库写入数据,节点B从节点A的数据库读取数据。 除了本地存储的模式信息之外,节点B没有自己的任何数据

根据文档,
{local_content,true}
似乎是我需要使用的,但是我尝试让节点B读取节点A的数据失败

我的架构和表配置如下所示:

在nodeA@ip1:

    net_adm:ping('nodeB@ip2').
    rd(user, {name, nick}).
    mnesia:create_schema([node()|nodes()]).
    mnesia:start().
    mnesia:create_table(user, [ {local_content, true}, 
                                {disc_copies, [node()]}, 
                                {attributes,record_info(fields, user) }]).

%% insert data and list rows on nodeA 
%% WORKS
在nodeB@ip2:

    mnesia:start().
    %% code to list rows from user table on nodeA 
    %% throws an ERROR saying table does not exist.

配置是否错误,或者是否可以通过其他方式执行此操作?

您可能需要将节点B添加到架构的额外\u db\u节点配置内容中。如果是基于磁盘的db,则不必这样做,但在RAM中,必须让它做您想要的事情


不确定具体细节,我可能会搞不清楚该把东西放在哪里。我对记忆能力不是很有经验,但文件表明你应该这样做。

我认为你不能用你提到的方式来做。另一种方法可能是对节点A进行rpc调用并以这种方式获取数据。使用mnesia从节点B读取数据是没有意义的,因为它实际上只是执行一个RPC

所以节点B应该是:

rpc:call(nodeA@ip1, mnesia, read, ....).
希望这是你[多少]需要的

编辑:
哦,我忘了提到,不需要两个节点上的模式就可以工作。这是假设节点B并不真正关心与节点A共享任何其他数据,它只是读取数据;换句话说,只需保留节点A上的所有mnesia内容,并从节点B执行RPC调用即可。

谢谢。我将尝试一下,看看我得到了什么。额外的\u db\u节点没有帮助。谢谢你,真的。文档中说,对本地内容表的访问应该在本地完成。所以我认为我的问题是没有意义的。访问本地内容表应该在本地完成。使这个问题无效。