7

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

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

它仅基于方法map、flatMap 和 withFilter的存在。

这让你也可以为你自己的类型使用 for 语法——你必须只为这些类型定义 map、flatMap 和 withFilter。”

我要解决的问题是我们有一个批处理过程,它从几个数据库加载数据、组合数据并以某种方式导出结果。数据小到可以放入内存(每个源系统有 100,000 条记录),但大到足以考虑性能。

我可以使用传统的内存数据库(如 H2)并通过 ScalaQuery 或类似的东西访问它,但我真正需要的只是一种能够有效地搜索和连接来自不同源系统的数据的方法——相当于 SQL 的索引和加入。使用成熟的关系数据库 + Scala ORM 来处理可以通过一些 Scala 原生的数据结构轻松有效地解决的问题,感觉真的很尴尬。

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

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

4

1 回答 1

1

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

于 2013-01-03T16:45:22.137 回答