【发布时间】:2019-06-05 13:13:53
【问题描述】:
我正在从一个 erlang VM 向 Mnesia 写入数据,现在我在同一台机器上启动了另一个 erlang VM,第二个 VM 可以读取第一个 VM 写入 mnesia 的数据。
【问题讨论】:
我正在从一个 erlang VM 向 Mnesia 写入数据,现在我在同一台机器上启动了另一个 erlang VM,第二个 VM 可以读取第一个 VM 写入 mnesia 的数据。
【问题讨论】:
当然可以,这里有一些基本的方法:
iex --name nodeA@127.0.0.1 和 iex --name nodeB@127.0.0.1
Node.connect :"nodeB@127.0.0.1"
:mnesia.create_schema [node(), :"nodeB@127.0.0.1"]
:mnesia.start
create_table(Person, [attributes: [:id, :name]])
:mnesia.dirty_write({Person, 1, "John"})
:mnesia.dirty_read({Person, 1})
参考资料: https://elixirschool.com/en/lessons/specifics/mnesia/# http://erlang.org/doc/apps/mnesia/
【讨论】:
要共享 Mnesia 表,节点必须属于同一 distributed Erlang system。
模式定义了哪些节点包含数据库,参见。 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() 定义查找表的位置。
【讨论】: