我有一张不适合内存的大地图,因此我希望它能够存放在磁盘上。我有以下选择:
getOrElseUpdate
和++=
和
apply
/ update
方法。我可以在Scala中围绕MapDB
创建自己的包装类,但我真的不想手动实现所有Map
特征。 Map
特性。这可能是更好的性能解决方案,但它带来了运行db 那么是否有任何一个很好的scala only库来实现地图的Scala集合糖,但是它会回溯到磁盘和/或大型地图的键值存储?
答案 0 :(得分:7)
回答了我自己的问题
import collection.mutable
import org.mapdb.DBMaker
import collection.JavaConversions._
val cache: mutable.Map[String, Seq[String]] = DBMaker.newTempHashMap[String, Seq[String]]()
答案 1 :(得分:0)
值得一提Chronicle Map:它与MapDB(磁盘持久ConcurrentMap
实现)基本相同,但它比MapDB much more efficient。
示例:
val cache: mutable.Map[String, java.util.List[String]] = ChronicleMap
.of(classOf[String], classOf[java.util.List])
.averageKey("key")
.averageValue(...)
.valueMarshaller(ListMarshaller.of(
CharSequenceBytesReader.INSTANCE,
CharSequenceBytesWriter.INSTANCE
))
.entries(...)
.createPersistedTo(file)