前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 响应式关系数据库连接了解一下

Java 响应式关系数据库连接了解一下

作者头像
码农小胖哥
发布2020-03-19 12:10:12
1.8K0
发布2020-03-19 12:10:12
举报
文章被收录于专栏:码农小胖哥的码农生涯

1. 前言

响应式编程已经在 Java 编程领域出现很长一段时间了。具有高性能,事件驱动,充分利用计算资源,更加优雅的异步编程体验,同时它也提供了背压机制来防止系统过载。很长一段时间 Java 的响应式只能同 MongoDBRedis 等这些非关系型数据库进行交互。而目前我们大部分的数据还是存放在关系型数据库中,大部分情况下 Java 使用 JDBC 来操作关系型数据库,而 JDBC 是阻塞的、同步的。所以迫切需要一种支持响应式的数据库驱动协议。目前市面上有两种响应式数据库驱动协议,我们来了解一下它们。

2. ADBA

ADBA[1]Oracle 主导的 Java 异步数据库访问的标准 API 。它的目的性是集成于未来 Java 的标准发行版中,目前发展比较慢,目前只提供OpenJDK沙盒特性[2]供开发者研究之用。它不打算作为 JDBC 的扩展或替代,而是一个完全独立的 API,该 API 提供对 JDBC 相同数据库的完全无阻塞访问。

3. R2DBC

Spring 官方在 Spring 5 发布了响应式 Web 框架 Spring WebFlux 之后急需能够满足异步响应的数据库交互 API 。由于缺乏标准和驱动,Pivotal(Spring 官方) 团队开始研究反应式关系型数据库连接(Reactive Relational Database Connectivity),并提出了 R2DBC 规范 API 以评估可行性并讨论数据库厂商是否有兴趣支持反应式的异步非阻塞驱动程序。最开始只有 PostgreSQLH2MSSQL 三家,现在 MySQL 也加入了进来。R2DBC 最新版本是0.8.1.RELEASE。除了驱动实现外还提供了 **R2DBC** 连接池 [3]R2DBC 代理[4]。除此之外还支持云原生应用。

3.1 可用的 R2DBC 驱动实现

目前可用的驱动有:

  • cloud-spanner-r2dbc[5]:用于Google Cloud Spanner的驱动程序
  • jasync-sql[6]JavaKotlinR2DBC包装器,用Kotlin编写的MySQLPostgreSQL异步数据库驱动程序。
  • r2dbc-h2[7]:为H2实现的原生驱动程序,以方便作为测试数据库。
  • r2dbc-postgres[8]:为PostgreSQL实现的原生驱动程序。
  • r2dbc-mssql[9]:为Microsoft SQL Server实现的原生驱动程序。
  • r2dbc-mysql[10]:为MySQL实现的原生驱动程序。

4. 总结

我们需要明确一点,无论 ADBA 还是 R2DBC 都不是为了取代 JDBC 。只是为了补充在响应式编程下的空白。至于响应式的未来如何,目前还不是很明朗,但是发展很迅速,我还是很看好的。就目前来说 ADBA 具有官方加持的优势,而 R2DBC 具有活跃的社区优势,究竟谁是业界规则的领导者,相信很快就会揭晓。后续我也会实验性的来尝试使用一下 R2DBC 并分享其中的一些经验,多多关注

参考资料

[1]ADBA: https://blogs.oracle.com/java/jdbc-next:-a-new-asynchronous-api-for-connecting-to-a-database

[2]沙盒特性: https://github.com/oracle/oracle-db-examples/tree/master/java/AoJ

[3]R2DBC 连接池 : https://github.com/r2dbc/r2dbc-pool

[4]R2DBC 代理: https://github.com/r2dbc/r2dbc-proxy

[5]cloud-spanner-r2dbc: https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc

[6]jasync-sql: https://github.com/jasync-sql/jasync-sql

[7]r2dbc-h2: https://github.com/r2dbc/r2dbc-h2

[8]r2dbc-postgres: https://github.com/r2dbc/r2dbc-postgresql

[9]r2dbc-mssql: https://github.com/r2dbc/r2dbc-mssql

[10]r2dbc-mysql: https://github.com/mirromutth/r2dbc-mysql

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农小胖哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. ADBA
  • 3. R2DBC
    • 3.1 可用的 R2DBC 驱动实现
    • 4. 总结
      • 参考资料
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档