我需要决定是否在我参与的Clojure系统中使用STM来处理需要几GB才能存储在单个STM ref中的系统.
我想听听任何有任何建议使用Clojure STM和大型索引数据集来听取他们的经验的人.
我一直在使用 Clojure 来执行一些相当大规模的数据处理任务(绝对是千兆字节的数据,通常是存储在各种 Clojure 构造/STM 引用中的大量大型 Java 数组)。
只要所有内容都适合可用内存,单个引用中的大量数据就不会有问题。ref 本身仅应用少量固定的 STM 开销,该开销与其中包含的内容的大小无关。
一个不错的额外好处来自 Clojure 标准数据结构(地图、向量等)中内置的结构共享 - 您可以获取 10GB 数据结构的完整副本,更改结构中任何位置的一个元素,并保证两者数据结构总共只需要 10GB 以上的一小部分。这非常有帮助,特别是如果您考虑到由于 STM/并发性,您可能会同时创建多个不同版本的数据。