質問
同じアプリケーションを実行する N erlang ノードがあると仮定します。MnesiaテーブルT1をすべてのNノードと共有したいと思いますが、問題はありません。ただし、別の記憶テーブル T2 をノードのペアと共有したいと考えています。つまり、T2の内容は同一であり、共有ペアのみとともに複製されます。別の言い方をすれば、T2テーブルにn/2の異なる内容が必要です。これは、ノードの個別のペアごとにT2の名前を変更するのではなく、Mnesiaで可能ですか?
解決
1 つのテーブルは、共有するノードの数に関係なく、常に 1 つのテーブルです。テーブルを共有するノードのペアが必要な場合は、ノードのペアごとに一意のテーブルを作成する必要があります。
ただし、これらすべてのテーブルに同じ設定 (レコードなど) を使用できるため、それを実行するためにそれほど多くの作業は必要ありません。
他のヒント
mnesia のテーブルの断片化を使用すると、これを行うことができます。 mnesia_frag_hash
コールバックの動作。これにより、キーの配布を制御できるようになり、コールバックがどのノード ペア (したがってどのフラグメント) を使用するかを決定できるようにキーを構築することが可能になります。
これが特定のケースで機能するかどうかは、アクセス パターンとデータ セットによって異なります。おそらく、これはかなり複雑なアプローチであるため、代わりに単に別のテーブル名を使用する方が適切である可能性があります。
所属していません StackOverflow