質問

同じアプリケーションを実行する N erlang ノードがあると仮定します。MnesiaテーブルT1をすべてのNノードと共有したいと思いますが、問題はありません。ただし、別の記憶テーブル T2 をノードのペアと共有したいと考えています。つまり、T2の内容は同一であり、共有ペアのみとともに複製されます。別の言い方をすれば、T2テーブルにn/2の異なる内容が必要です。これは、ノードの個別のペアごとにT2の名前を変更するのではなく、Mnesiaで可能ですか?

役に立ちましたか?

解決

1 つのテーブルは、共有するノードの数に関係なく、常に 1 つのテーブルです。テーブルを共有するノードのペアが必要な場合は、ノードのペアごとに一意のテーブルを作成する必要があります。

ただし、これらすべてのテーブルに同じ設定 (レコードなど) を使用できるため、それを実行するためにそれほど多くの作業は必要ありません。

他のヒント

mnesia のテーブルの断片化を使用すると、これを行うことができます。 mnesia_frag_hash コールバックの動作。これにより、キーの配布を制御できるようになり、コールバックがどのノード ペア (したがってどのフラグメント) を使用するかを決定できるようにキーを構築することが可能になります。

これが特定のケースで機能するかどうかは、アクセス パターンとデータ セットによって異なります。おそらく、これはかなり複雑なアプローチであるため、代わりに単に別のテーブル名を使用する方が適切である可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top