Доступ к распределенной базе данных мнений с разных узлов

У меня есть база данных mnesia, содержащая разные таблицы.

Я хочу иметь доступ к таблицам с разных терминалов Linux.

У меня есть функция add_record, которая принимает несколько параметров, скажем, name и id. Я хочу иметь возможность вызывать add_record для node1 и add record для node2, но я хочу обновлять одну и ту же таблицу из разных мест.

Я прочитал несколько источников, и единственное, что я обнаружил, это то, что я должен использовать net_adm:ping< /a> (узел2). но почему-то я не могу получить доступ к данным из таблицы.


person Onty    schedule 24.02.2012    source источник


Ответы (1)


я предполагаю, что вы, вероятно, имели в виду replicated таблицу. Предположим, у вас есть таблица мнений на узле: [email protected] с -setcookie mycookie, независимо от того, реплицирована ли она на другом узле или нет, если я хочу получить доступ к записям с другого терминала, тогда мне нужно использовать erlang и в этом другом терминале, создав узел, соединяя этот узел с нашим узлом с таблицей (вы гарантируете, что все они имеют один и тот же файл cookie), затем вы вызываете метод на удаленном узле.

Допустим, вы хотите использовать метод add_record в модуле mydatabase.erl на узле [email protected] с таблицей мнений. Я открываю терминал Linux и ввожу следующее:

$ erl -name [email protected] -setcookie mycookie
Eshell V5.8.4  (abort with ^G)
1> N = '[email protected]'.
'[email protected]'
2> net_adm:ping(N).
pong
3> rpc:call(N,mydatabase,add_record,[RECORD]).
{atomic,ok}
4> 

with this module (rpc), you can call any method on a remote node, if the two nodes are connected using the same cookie. start by calling this method on the remote node:

rpc:call('[email protected]',mnesia,info,[]).
It should display everything in your remote terminal. I suggest that probably, you first go through this lecture: Distributed Erlang Programming and then you will be able to see how replicated mnesia tables are managed. Go through that entire tutorial on that domain.

person Muzaaya Joshua    schedule 24.02.2012