gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:02:44 24 4
gpt4 key购买 nike

有没有办法使用 mnesia 进行本地写入和全局读取(无复制)。例如:节点 A 写入其本地 DB,节点 B 从节点 A 的 DB 读取。
除了本地存储的模式信息之外,节点 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.

配置错误还是可以通过任何其他方式完成?

最佳答案

我认为你不能像你说的那样做。另一种方法可能是对节点 A 进行 rpc 调用并以这种方式获取数据。使用 mnesia 从节点 B 读取数据毫无意义,因为它本质上只会执行 RPC。

所以节点B应该是:

rpc:call(nodeA@ip1, mnesia, read, ....).

希望这是你[有点]需要的。

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

关于erlang - Mnesia:以{local_content, true}模式读取远程节点数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com