Mnesia表复制/共享

时间:2020-03-06 14:35:22  来源:igfitidea点击:

假设我们有N个erlang节点,运行相同的应用程序。我想
与所有N个节点共享一个Mnesia表T1,我认为这没有问题。
但是,我想与节点对共享另一个Mnesia表T2.
我的意思是T2的内容将是相同的,并复制到/与
只共享一对。换句话说,我要N / 2个不同的内容
T2表。健忘症有可能吗,而不是为每个重命名T2
不同的节点对?

解决方案

一个表始终是一个表,无论我们共享多少个节点。如果要让成对的节点共享一个表,则必须为每对节点创建一个唯一的表。

不过,我们可以对所有这些表使用相同的设置(记录等),因此完成它应该没有太多的工作。

如果使用mnesia_frag_hash回调行为,则可以使用mnesia的表碎片来完成此操作。这使我们可以控制密钥的分配,并且可以构造密钥,以便回调能够确定应使用哪个节点对(从而确定哪个片段)。

在特定情况下这是否有效取决于访问模式和数据集。很有可能这是一个非常复杂的方法,最好只使用不同的表名来更好地服务。