gpt4 book ai didi

database - 从不同节点访问分布式 mnesia 数据库

转载 作者:太空狗 更新时间:2023-10-30 01:51:42 24 4
gpt4 key购买 nike

我有一个包含不同表的 mnesia 数据库。

我希望能够从不同的 Linux 终端访问表格。

我有一个名为 add_record 的函数,它接受一些参数,比如 nameid。我希望能够在 node1 上调用 add_record 并在 node2 上调用 add record 但我想更新来自不同位置的同一张 table 。

我阅读了一些资料,唯一发现的是我应该使用 net_adm:ping (节点 2)。但不知何故我无法访问表中的数据。

最佳答案

我假设你的意思可能是 replicated table 。假设你的 mnesia 表在节点上:nodea@127.0.0.1-setcookie <b>mycookie</b> ,无论它是否在另一个节点上复制,如果我想从另一个终端访问记录,那么我也必须在另一个终端中使用 erlang,方法是创建一个节点,将这个节点连接到我们的表节点(你确保它们都具有相同的 cookie),然后调用远程节点上的方法。

假设你想使用一个方法add_record在模块中 mydatabase.erl在节点上 nodea@127.0.0.1它有 mnesia 表,我打开一个 linux 终端并输入以下内容:

$ erl -name remote@127.0.0.1 -setcookie mycookieEshell V5.8.4  (abort with ^G)1> N = 'nodea@127.0.0.1'.'nodea@127.0.0.1'2> net_adm:ping(N).pong3> rpc:call(N,mydatabase,add_record,[RECORD]).{atomic,ok}4> 

使用此模块 ( rpc ),如果两个节点使用相同的 cookie 连接,您可以调用远程节点上的任何方法。首先在远程节点上调用此方法:

rpc:call('nodea@127.0.0.1',mnesia,info,[]).
它应该在您的远程终端中显示所有内容。我建议你可能先听完这个讲座: Distributed Erlang Programming然后您将能够看到如何管理复制的 mnesia 表。浏览有关该域的整个教程。

关于database - 从不同节点访问分布式 mnesia 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423832/

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