Может ли одна erlang VM прочитать данные, записанные в mnesia другой erlang VM? - PullRequest
0 голосов
/ 10 января 2019

Я записываю данные в Mnesia с одной виртуальной машины Erlang, теперь я запустил другую виртуальную машину Erlang на той же машине, может ли вторая виртуальная машина считывать данные, записанные в Mnesia первой виртуальной машиной.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Конечно, вы можете, вот несколько основных способов сделать это:

  1. Запустите два узла - iex --name nodeA@127.0.0.1 и iex --name nodeB@127.0.0.1
  2. С терминала узла A - Node.connect :"nodeB@127.0.0.1"
  3. С терминала узла A - :mnesia.create_schema [node(), :"nodeB@127.0.0.1"]
  4. Для узла A и узла B - :mnesia.start
  5. Из терминала узла A - create_table(Person, [attributes: [:id, :name]])
  6. С терминала узла B - :mnesia.dirty_write({Person, 1, "John"})
  7. Теперь вы можете получить информацию, которую узел B записал с узла A, выполнив базовый выбор - :mnesia.dirty_read({Person, 1})

Ссылка: https://elixirschool.com/en/lessons/specifics/mnesia/# http://erlang.org/doc/apps/mnesia/

0 голосов
/ 11 января 2019

Для совместного использования таблиц Mnesia узлы должны быть частью одной распределенной системы Эрланга .

Схема определяет, какие узлы содержат базу данных, ср. http://erlang.org/doc/apps/mnesia/Mnesia_chap3.html#define-a-schema

Репликация базы данных Mnesia описана здесь: http://erlang.org/doc/apps/mnesia/Mnesia_chap5.html#distribution-and-fault-tolerance.

Вы можете использовать mnesia: set_master_nodes () , чтобы определить, где найти таблицу.

...