2009-06-11 9 views
3

В чем разница между таблицей набора типов и таблицей типа ordered_set? Меня интересуют различия в производительности чтения/записи, о том, на чем основан заказ, о влиянии на распределенные узлы и т. Д.Различия между set и ordered_set в Mnesia?

+1

Я предполагаю, что вам нужен опыт реального мира, так как документация по модулю объясняет различия довольно хорошо? –

+1

Да, но можете ли вы ссылаться на документацию, о которой вы говорите? Документы, которые я читал, не вникают в большую глубину. – mindeavor

ответ

7

Заказ основан на первичном ключе, что означает, что таблицы tables_set намного быстрее при выполнении сопоставления/выбора итерации с использованием сложных первичных ключей. Например, если ваша запись выглядит как {{Key, Val1}, Val2}, вы можете совместить или выбрать на Key, чтобы очень быстро получить Val1 и Val2 за каждый случай Key. Помимо этого, я не знаю существенной разницы в скорости чтения/записи.

Возможно также фрагментация таблиц упорядоченных_set, хотя это означает, что итерация будет частично упорядочена, но не полностью упорядочена. Итерация по одному фрагменту упорядочена, но порядок от фрагмента до фрагмента не определен.

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 является агностическим процессом и не позволяет изменять переменные, эффекты через распределенные узлы должны быть идентичны локальным узлам.

Оговорка:

Я не запускать какие-либо бенчмаркинга на два типа, так что это мое предположение о производительности.

+0

ОК, так что, очевидно, я недостаточно внимательно изучил вопрос. это касается таблиц mnesia, а не самого типа данных. Не стесняйтесь меня переубеждать. –