使用Clojure STM处理大型数据集的经验?

时间:2010-12-30 13:01:53

标签: clojure stm

我需要决定是否在我参与的Clojure系统中使用STM来处理需要几GB才能存储在单个STM ref中的系统。

我想听听任何有任何建议使用Clojure STM和大索引数据集来听取他们的经验的人。

2 个答案:

答案 0 :(得分:4)

我一直在使用Clojure进行一些相当大规模的数据处理任务(绝对是数十亿字节的数据,通常是存储在各种Clojure构造/ STM refs中的大量Java数组)。

只要所有内容都适合可用内存,您就不应该在单个引用中遇到大量数据的问题。 ref本身仅应用一小段固定数量的STM开销,该开销与其中包含的任何内容的大小无关。

Clojure的标准数据结构(地图,矢量等)中内置的结构共享带来了额外的好处 - 您可以获取10GB数据结构的完整副本,在结构中的任何位置更改一个元素,并且保证两个数据结构只需要一个超过10GB的分数。这非常有用,特别是如果您考虑到由于STM /并发性,您可能会在任何时候创建几个不同版本的数据。

答案 1 :(得分:1)

性能不会比使用小数据集的单个ref的STM更差或更好。与数据集的实际大小相比,数据集的更新次数更加阻碍了性能。

如果你有一个数据集的作者和许多读者,那么表现仍然会很好。但是,如果你有一个读者和许多作家,性能将受到影响。

也许更多信息可以帮助我们为您提供更多帮助。