scala - Scala 背后的可索引数据结构便于理解

标签 scala data-structures for-comprehension

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

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

它仅基于 ma​​p、flatMap 和 withFilter.

这也允许您将 for 语法用于您自己的类型 – 您 必须只为这些类型定义 map、flatMap 和 withFilter。”

我试图解决的问题是我们有一个批处理过程,它从几个数据库加载数据,组合数据并以某种方式导出结果。数据足够小,可以容纳在内存中(每个源系统有几个 100,000 条记录),但又足够大,因此考虑性能很重要。

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

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

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

最佳答案

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

关于scala - Scala 背后的可索引数据结构便于理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14140512/

相关文章:

java - 更新 Set 中的对象

Scala理解能力的表现

java - 使用Java2 aws sdk时如何配置Region?

java - 在Java中保存集合最有效的方法是什么?

scala - ne 是比 != 更好的检查 null 的方法吗?

c - 如何更改此队列顺序?

scala - 在 Scala 中嵌套 for-comprehensions 是一种好的风格吗?

scala - 如果返回值为 None 添加日志记录

scala - Spark : normalize each row of a DataFrame

scala - Apache Spark,将 “CASE WHEN … ELSE …”计算列添加到现有DataFrame中