Доступ к распределенной базе данных Mnesia из разных узлов - PullRequest
5 голосов
/ 24 февраля 2012

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

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

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

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

1 Ответ

5 голосов
/ 24 февраля 2012

Я предполагаю, что вы, вероятно, имели в виду replicated таблицу. Предположим, у вас есть таблица 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 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> 

с этим модулем (rpc) вы можете вызывать любой метод на удаленном узле, если два узла соединены с использованием одного и того же файла cookie. начать с вызова этого метода на удаленном узле:

rpc:call('nodea@127.0.0.1',mnesia,info,[]).
Он должен отображать все в вашем удаленном терминале. Я полагаю, что вы, вероятно, сначала пройдете эту лекцию: Распределенное программирование на эрланге , а затем вы сможете увидеть, как управляются реплицированные таблицы мнезии. Пройдите весь учебник по этому домену.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...