3

我正在学习和使用带有akka流的反应流编程,我试图为async-jdbc-driver或reactive-jdbc-driver找到任何库2年,我发现slick 3.0或rxjava-jdbc-driver提供异步jdbc api,但我知道 slick 正在 JDBC api 之上构建令人惊叹的 api,它是阻塞的(如果我错了,请纠正我),所以我猜从系统的角度来看,它可能不是从上到下的 100% 反应式系统。

另一个惊人的事件是去年发布了“Reactive Streams Specification V1.0”,所以我的问题是:

  1. 该事件是否会触发 JDBC 专家组来设计异步 JDBC API 支持?
  2. 那么Database Provider Organizations,比如MySQL的供应商Oracle,有没有计划实现相应的驱动呢?
  3. 如果这是没有希望的,任何方向或替换或任何我可以变成的东西或 JDBC 层都不必是反应性的,横向扩展的 mysql 服务器就足够了吗?
4

2 回答 2

2

我也不知道有什么计划。许多不受旧 JDBC API 约束的 NoSQL 解决方案开始提供基于响应式的 API。我不能说这些是否是全栈反应式的;您应该通过查看他们的规范/实现来确认这一点。

由于我们通过 RxNetty(Retrofit、OkHttp?)为 TCP/HTTP 提供了全栈响应式解决方案,并且也有针对 Servlet 4.0 的移动,所以如果我们可以在异步 JDBC 源上进行编写,那就太好了。但是,这需要从头开始进行新的 API 设计。

也许一旦 JDK 9 和 Flow API(本质上是 Reactive-Streams 但在不同的包下)被 JDK 开发人员理解和接受。请注意,普通的 Reactive-Streams API 可能不足以完全满足此类 I/O 的需求,并且需要以双向反应流的形式提供更多扩展的 API。

也许有 JEP 经验的人可以解决这个问题,我们可以开始迭代这些方法。

在那之前,我们有你提到的 JDBC 的阻塞包装器。

于 2016-04-24T14:53:42.650 回答
1

据 Oracle 称,他们正在为 JDBC 提供非阻塞 API。

如链接中所述:

这个新的 API 是完全非阻塞的。它并非旨在扩展或替代 JDBC,而是完全独立的 API,它提供对与 JDBC 相同的数据库的完全非阻塞访问。

您现在可以从 OpenJDK 下载新 API 并通过查看 API 并在 JDBC 邮件列表上提供反馈来参与该项目

于 2018-03-04T15:03:50.930 回答