【问题标题】:Can one erlang VM read the data written to mnesia by another erlang VM一个erlang VM可以读取另一个erlang VM写入mnesia的数据吗
【发布时间】:2019-06-05 13:13:53
【问题描述】:

我正在从一个 erlang VM 向 Mnesia 写入数据,现在我在同一台机器上启动了另一个 erlang VM,第二个 VM 可以读取第一个 VM 写入 mnesia 的数据。

【问题讨论】:

标签: erlang elixir mnesia


【解决方案1】:

当然可以,这里有一些基本的方法:

  1. 启动两个节点 - iex --name nodeA@127.0.0.1iex --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. 现在您可以通过基本选择从节点A获取节点B写入的信息-:mnesia.dirty_read({Person, 1})

参考资料: https://elixirschool.com/en/lessons/specifics/mnesia/# http://erlang.org/doc/apps/mnesia/

【讨论】:

    【解决方案2】:

    要共享 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() 定义查找表的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 2013-05-25
      • 2015-01-17
      • 2016-09-18
      • 2020-08-27
      • 2015-07-09
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多