Scala背后的可索引数据结构用于理解

时间:2013-01-03 14:09:19

标签: scala data-structures for-comprehension

我刚刚观看了Martin Odersky关于Coursera的Scala讲座的第6周。在第5讲他说那个

“... 的翻译不仅限于列表或 序列,甚至集合;

它完全基于方法 map,flatMap和 withFilter 即可。

这使您可以为自己的类型使用for语法 - 您 必须只为这些类型定义map,flatMap和withFilter。“

我试图解决的问题是我们有一个批处理过程,它从几个数据库加载数据,组合数据并以某种方式导出结果。数据足够小以适应内存(来自每个源系统的几十万条记录),但足够大以至于考虑性能很重要。

我可以使用传统的内存数据库(如H2)并通过ScalaQuery或类似方式访问它,但我真正需要的只是一种能够有效地搜索和连接来自不同源系统的数据的方法 - 相等到SQL的索引和JOIN。使用完整的关系数据库+ Scala ORM,可以通过Scala原生的一些数据结构轻松高效地解决问题,这感觉真的很尴尬。

我的第一个天真的方法是一个Vector数据结构(用于快速直接访问)与一个或多个“索引”(可以像数据库系统一样实现为B-Trees)。此组合数据结构的 map,flatMap,withFilter 方法可以足够智能,如果它们有一个用于查询字段的索引,则可以使用索引 - 或者它们可以有一个“提示”来使用一个索引。

我只是想知道这些数据结构是否已经存在且可用,还是我需要自己实现?是否有Scala的库或集合框架可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

不在标准库中(当然除了Vector之外),我不知道提供它们的任何非标准库。