2009-06-11 6 views
3

タイプセットのテーブルと、タイプordered_setのテーブルの違いは何ですか?私は、読み取り/書き込みパフォーマンスの違い、順序付けの基礎となるもの、分散ノードの影響などに興味があります。Mnesiaのsetとordered_setの違いは?

add_element(E, [H|Es]) when E > H -> [H|add_element(E, Es)]; 
add_element(E, [H|_]=Set) when E < H -> [E|Set]; 
add_element(_E, [_H|_]=Set) -> Set;  %E == H 
add_element(E, []) ->[E]. 

ので、順序は要素のストレート<または>比較のようになります限り発注元から行くように

+1

モジュール上のドキュメントが違いをかなりうまく説明しているので、実際の経験をしたいと思っていますか? –

+1

はい、あなたが話しているドキュメントにリンクすることはできますか?私が読んできたドキュメントはあまり深くはありません。 – mindeavor

答えて

7

順序はプライマリキーに基づいています。つまり、ordered_setテーブルは、複雑なプライマリキーを使用して一致/選択の繰り返しを行う方がはるかに高速です。たとえば、レコードが{{Key, Val1}, Val2}のような場合は、Keyに一致するか選択して、Val1Val2が出現するたびにKeyになるようにすることができます。それ以外に、私は読み書き速度の大きな違いを認識していません。

断片化されたordered_set表も可能ですが、反復は部分的に順序付けられますが、完全に順序付けされるわけではありません。単一フラグメントの反復は順序付けられますが、フラグメントからフラグメントへの順序は未定義です。

1

注文以外は、セットとまったく同じです。だから私は、より低い「価値」ルックアップの要素が、そのセットよりも平均的に速いと推測する危険性がある。しかしそれ以外は私には分かりません。

Erlangはプロセスに依存せず、変数の変更を許可しないため、分散ノード間の影響はローカルノードと同じでなければなりません。

警告:

これはパフォーマンスに関する私の一部に憶測があるので、私は2つのタイプのいずれかのベンチマークを実行していません。

+0

私は質問をよく読んでいませんでした。これは、データ型そのものではなく、ムネジアのテーブルに関するものです。私を改造してください。 –

関連する問題