3

set 型のテーブルと、ordered_set 型のテーブルの違いは何ですか? 読み取り/書き込みパフォーマンスの違い、順序付けの基準、分散ノード間の影響などに興味があります。

4

2 に答える 2

7

順序付けは主キーに基づいています。つまり、ordered_set テーブルは、複雑な主キーを使用して一致/選択の反復を行う方がはるかに高速です。たとえば、レコードが のよう{{Key, Val1}, Val2}に見える場合、一致または選択して、 が出現するたびに非常にKey迅速に取得できます。それ以外は、読み取り/書き込み速度に大きな違いがあることは認識していません。Val1Val2Key

また、ordered_set テーブルのフラグメント化も可能ですが、反復は部分的に順序付けられますが、完全には順序付けられません。単一のフラグメントの反復は順序付けられますが、フラグメントからフラグメントへの順序は未定義です。

于 2009-07-24T15:25:16.493 に答える
1

ソースからの注文に関する限り:

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].

したがって、順序付けは、要素の単純な < または > 比較のように見えます。

注文以外はセットと全く同じです。したがって、「値」が低い要素のルックアップは、セットよりも平均して高速であると推測できます。しかし、それ以外はわかりません。

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

警告:

私は 2 つのタイプでベンチマークを実行していないので、これはパフォーマンスに関する私の推測です。

于 2009-06-12T02:04:28.080 に答える