2

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

4

2 に答える 2

7

コールバック動作を利用すれば、mnesia のテーブル フラグメンテーションでこれを行うことができmnesia_frag_hashます。これにより、キーの配布を制御でき、コールバックがどのノード ペア (したがって、どのフラグメント) を使用する必要があるかを判断できるようにキーを作成できます。

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

于 2008-09-23T13:28:55.547 に答える
5

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

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

于 2008-09-23T11:03:46.957 に答える