一、 数据库 (Databases)
1. 关系型数据库 (RDBMS)
通过 JDBC 可以连接所有主流数据库,社区也提供了很多更 Scala 化的封装库(如 Slick, Doobie, Quill)。
-
MySQL / MariaDB
-
PostgreSQL
-
Oracle Database
-
Microsoft SQL Server
-
DB2
-
SQLite
-
H2 (内存数据库,常用于测试)
-
HSQLDB / HyperSQL (内存数据库)
-
Apache Derby
2. NoSQL 数据库
-
键值存储 (Key-Value)
-
Redis: 通过
lettuce或Jedis(Java客户端) ,或 Scala 封装库rediscala。 -
Apache Cassandra: 官方提供 Java Driver,可直接使用。也有更 Scala 化的
phantom等库。 -
ScyllaDB: 与 Cassandra 协议兼容,可使用相同的驱动。
-
RocksDB: (嵌入式) 通过 Java API 使用。
-
-
文档存储 (Document)
-
MongoDB: 官方
mongo-java-driver,或 Scala 封装库casbah(已停止维护),现在推荐直接使用官方驱动或reactivemongo(异步驱动)。 -
Couchbase: 官方 Java SDK。
-
-
列式存储 (Column-Family)
-
Apache HBase: 通过官方 Java API 或
Apache Phoenix(JDBC 方式) 访问。
-
-
图数据库 (Graph)
-
Neo4j: 官方 Java Driver,或通过 Cypher 的 HTTP API 访问。
-
JanusGraph: 通过 Gremlin Query Language 访问,可使用
Apache TinkerPop的 JVM API。
-
-
搜索引擎 (Search Engine)
-
Elasticsearch: 官方提供
Java High Level REST Client,是首选方式。老版的Transport Client已废弃。 -
Apache Solr: 通过
SolrJJava 客户端访问。
-
3. NewSQL 与分布式数据库
-
ClickHouse: 官方提供 JDBC Driver 和 HTTP API。
-
CockroachDB: PostgreSQL 协议兼容,可使用 PostgreSQL JDBC 驱动。
-
TiDB: MySQL 协议兼容,可使用 MySQL JDBC 驱动。
-
YugabyteDB: PostgreSQL 协议兼容,可使用 PostgreSQL JDBC 驱动。
二、 大数据计算与查询引擎 (Big Data Compute & Query Engines)
这是 Scala 真正大放异彩的领域。许多引擎本身就用 Scala 编写,或提供原生的 Scala API。
1. 批处理引擎 (Batch Processing)
-
Apache Spark (核心用 Scala 编写): 提供极其强大且原生的 Scala API,是使用 Spark 的最佳方式之一。
-
Apache Flink: 虽然核心是 Java,但提供了非常完善和易用的 Scala API,体验接近原生。
-
Apache Beam: 是一个统一的编程模型,可以使用其 Scala SDK 来运行在 Spark, Flink 等其他引擎之上。
2. 流处理引擎 (Stream Processing)
-
Apache Kafka: 不仅是消息队列,也是流平台。使用
kafka-streams库进行流处理,它有很好的 Scala 支持。 -
Apache Flink (见上): 优秀的流处理引擎。
-
Apache Spark Structured Streaming: Spark 的流处理模块,同样提供原生 Scala API。
-
Akka Streams: 基于 Reactive Streams 标准的流处理库,纯 Scala/Java 库,用于构建高并发、背压的分布式数据流应用。
3. 交互式查询引擎 (Interactive Query)
-
Apache Spark SQL (Spark 的一部分)
-
Trino (formerly PrestoSQL): 可通过 JDBC Driver 访问。
-
Apache Hive: 可通过 JDBC Driver (HiveServer2) 访问。
4. 其他大数据生态系统工具
-
Apache Hadoop HDFS: 通过 Hadoop 的 Java Client API 进行文件操作。
-
Apache Iceberg / Delta Lake / Hudi: (湖仓一体表格式) 通常通过 Spark 或 Flink 的 Scala/Java API 进行操作。
三、 Scala 生态的数据库工具库 (ORM/FRM, 连接池等)
这些库让你以更函数式、更 Scala 的方式与数据库交互:
-
Slick: “Functional Relational Mapping” (FRM) 库,允许使用 Scala 集合的风格来编写类型安全的数据库查询。
-
Doobie: 一个纯函数式的 JDBC 层,基于
cats和fs2生态,无副作用,类型安全。 -
Quill: 编译时生成查询的框架,提供“ quoted domain specific language” ,查询在编译时被验证和转换,运行时无开销。
-
ReactiveMongo: 用于 MongoDB 的非阻塞、异步驱动,提供响应式流访问。
-
sttp: 虽然是一个 HTTP 客户端库,但常用于访问那些提供 RESTful API 的数据库和服务(如 Elasticsearch, Couchbase)。
总结
| 类别 | 代表技术 | Scala 支持特点 |
|---|---|---|
| 关系型数据库 | MySQL, PostgreSQL, Oracle... | 通过 JDBC 通用支持,有 Slick, Doobie 等优秀库提升体验 |
| NoSQL 数据库 | MongoDB, Cassandra, Redis, Elasticsearch... | 通过官方 Java 客户端或专门的 Scala 封装库(如 ReactiveMongo) |
| 计算引擎 (核心) | Apache Spark, Akka Streams | 原生 Scala,API 体验最佳 |
| 计算引擎 (优秀API) | Apache Flink, Apache Kafka Streams | 一流的 Scala API,体验接近原生 |
| 查询引擎 | Trino, Hive, Spark SQL | 主要通过 JDBC 或各引擎自身的 Scala/Java API |
| 函数式工具库 | Slick, Doobie, Quill | 提供类型安全、函数式的数据库操作方式,极大提升开发效率和安全性 |
核心优势:Scala 不仅仅是“可以”操作这些系统,而且在 JVM 生态互通性、大数据引擎的原生API支持 和 函数式编程范式 方面具有巨大优势,使其成为数据工程和后端系统开发的绝佳选择。对于 Spark、Flink、Kafka 等引擎,使用 Scala API 通常能获得最及时的特性更新和最地道的使用方式。
1945

被折叠的 条评论
为什么被折叠?



