egb*_*kul 7 scala for-comprehension data-structures
我刚刚观看了Martin Odersky在Coursera上关于Scala的讲座第6周.在第5讲他说
"...... for的翻译不仅限于列表或序列,甚至是集合;
它完全基于方法map,flatMap和withFilter的存在.
这使您可以为自己的类型使用for语法 - 您只能为这些类型定义map,flatMap和withFilter."
我试图解决的问题是我们有一个批处理过程,它从几个数据库加载数据,组合数据并以某种方式导出结果.数据足够小以适应内存(来自每个源系统的几十万条记录),但足够大以至于考虑性能很重要.
我可以使用传统的内存数据库(如H2)并通过ScalaQuery或类似的方式访问它,但我真正需要的只是一种能够有效地从不同源系统搜索和连接数据的方法 - 等于SQL的索引和JOINs.使用完整的关系数据库+ Scala ORM,可以通过Scala原生的一些数据结构轻松高效地解决问题,这感觉真的很尴尬.
我的第一个天真的方法是一个Vector数据结构(用于快速直接访问)与一个或多个"索引"(可以像数据库系统一样实现为B-Trees).这个组合数据结构的map,flatMap,withFilter方法可以足够智能,如果它们有一个用于查询字段的索引,则可以使用索引 - 或者它们可以有一个"提示"来使用索引.
我只是想知道这些数据结构是否已经存在且可用,还是我需要自己实现它们?是否有Scala的库或集合框架可以解决这个问题?