Erlang 是否将磁盘节点加载到ram节点?

Erlang 是否将磁盘节点加载到ram节点?,erlang,mnesia,Erlang,Mnesia,我没有得到的东西,我有两个记忆节点。一个有ram,另一个有光盘拷贝 我的问题是: 您是否创建过一次模式?但模式是输入节点的地方 我弄糊涂了,发现这方面没有好的文档让我们从澄清概念开始。mnesia集群由节点和表组成;节点可能有表的副本。副本的类型(可能是ram\u copies、disc\u copies、以及disc\u only\u copies)适用于给定节点上的给定表。一个节点可以具有不同表的不同类型的副本,并且一个表在不同节点上可以具有不同类型的副本。一种特殊情况是节点根本没有基于光盘

我没有得到的东西,我有两个记忆节点。一个有ram,另一个有光盘拷贝

我的问题是:

您是否创建过一次模式?但模式是输入节点的地方


我弄糊涂了,发现这方面没有好的文档

让我们从澄清概念开始。mnesia集群由节点和表组成;节点可能有表的副本。副本的类型(可能是
ram\u copies
disc\u copies
、以及
disc\u only\u copies
)适用于给定节点上的给定表。一个节点可以具有不同表的不同类型的副本,并且一个表在不同节点上可以具有不同类型的副本。一种特殊情况是节点根本没有基于光盘的副本;它被称为仅ram节点

模式是一个特殊的表,用于存储有关节点和表的信息。在集群中,每个节点都必须有该表的副本;只有ram的节点显然有一个ram副本,其他节点有一个磁盘副本。准确地说,节点必须具有架构的光盘副本,才能具有任何其他表的基于光盘的副本

调用
mnesia:create_schema
时,您正在创建一个没有表的架构的光盘副本,在启动时由mnesia加载(如果mnesia已经启动,此函数将拒绝工作)。如果集群包含多个基于光盘的节点,则会同时在所有这些节点上创建架构,并且当在这些节点上启动mnesia时,它们会自动相互连接(节点从架构中相互了解)

当mnesia无法在启动时从磁盘加载模式时,它会在ram中为自己创建一个空模式(或者拒绝启动,具体取决于设置)。之后,您可以通过在集群的基于磁盘的节点上调用
mnesia:change_config
将其转换为仅ram节点,在这种情况下,空模式将被替换,节点将与集群的其余部分同步,或者您可以开始创建表并添加其他仅ram节点(仍然具有空模式),构建一个只有ram的集群


通过在表
schema
上调用
mnesia:change\u table\u copy\u type
,可以将仅ram节点转换为光盘节点。通过这种方式,您可以从头开始动态构建完整的基于磁盘的集群,而无需事先创建基于磁盘的模式。但是,如果您有一组固定的磁盘节点,那么在第一次启动集群之前,静态初始化这些节点上的架构就容易多了。

我建议您阅读本章:。比尔。