Опыт работы с Clojure STM для больших наборов данных? - PullRequest
8 голосов
/ 30 декабря 2010

Мне нужно принять решение о том, использовать ли STM в системе Clojure, с которой я работаю, для системы, которой требуется несколько ГБ для хранения в одной ссылке STM.

Я хотел бы услышать от любого, кто посоветует использовать Clojure STM с большими индексированными наборами данных, чтобы услышать их опыт.

Ответы [ 2 ]

4 голосов
/ 07 января 2011

Я использовал Clojure для некоторых довольно масштабных задач обработки данных (определенно гигабайт данных, как правило, множество больших массивов Java, хранящихся в различных конструкциях Clojure / ссылках STM).

Пока все умещается в доступной памяти, у вас не должно быть проблем с чрезвычайно большими объемами данных в одной ссылке. Сама ссылка применяет только небольшое фиксированное количество служебных данных STM, которое не зависит от размера того, что в нем содержится.

Приятным дополнительным бонусом является структурное совместное использование, которое встроено в стандартные структуры данных Clojure (карты, векторы и т. Д.) - вы можете взять полную копию структуры данных размером 10 ГБ, изменить один элемент в любом месте структуры и гарантируется, что для обеих структур данных вместе потребуется только доля больше 10 ГБ. Это очень полезно, особенно если вы считаете, что из-за STM / параллелизма у вас может быть несколько разных версий создаваемых данных одновременно.

1 голос
/ 07 января 2011

Производительность не будет ни хуже, ни лучше, чем у STM, если использовать одну ссылку с небольшим набором данных.Производительность больше зависит от количества обновлений набора данных, чем от фактического размера набора данных.

Если у вас есть один писатель в наборе данных и много читателей, производительность все равно будет довольно хорошей.Однако если у вас есть один читатель и много писателей, производительность пострадает.

Возможно, дополнительная информация поможет нам помочь вам больше.

...