0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

响应式数据库驱动协议ADBA和R2DBC

汽车玩家 来源:码农小胖哥 作者:码农小胖哥 2020-04-12 19:40 次阅读

1. 前言

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

2. ADBA

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

3. R2DBC

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

3.1 可用的 R2DBC 驱动实现

目前可用的驱动有:

cloud-spanner-r2dbc:用于Google Cloud Spanner的驱动程序

jasync-sql:Java和Kotlin的R2DBC包装器,用Kotlin编写的MySQL和PostgreSQL异步数据库驱动程序。

r2dbc-h2:为H2实现的原生驱动程序,以方便作为测试数据库。

r2dbc-postgres:为PostgreSQL实现的原生驱动程序。

r2dbc-mssql:为Microsoft SQL Server实现的原生驱动程序。

r2dbc-mysql:为MySQL实现的原生驱动程序。

4. 总结

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2943

    浏览量

    104096
  • 数据库
    +关注

    关注

    7

    文章

    3712

    浏览量

    64023
收藏 人收藏

    评论

    相关推荐

    数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例

    SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库
    的头像 发表于 09-20 11:46 95次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>出现823错误的<b class='flag-5'>数据</b>恢复案例

    软件系统数据库的分库分表设计

    软件系统数据库的分库分表设计 系统读写分离、分库分表技术实现采用MyCat中间件,MyCat 是一款开源(遵循 Apache License 2.0 协议)的大数据库集群中间件,用于搭建数据库
    的头像 发表于 08-22 11:39 215次阅读
    软件系统<b class='flag-5'>数据库</b>的分库分表设计

    数据库数据恢复—数据库所在分区空间不足导致sqlserver故障的数据恢复案例

    数据库数据恢复环境: 某品牌r520服务器,服务器中有7块SAS硬盘,这7块硬盘组建了一组2盘raid1阵列和一组5盘raid5阵列,raid1阵列存储空间安装操作系统,raid5阵
    的头像 发表于 05-22 13:16 262次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>数据库</b>所在分区空间不足导致sqlserver故障的<b class='flag-5'>数据</b>恢复案例

    通过Modbus读写数据库中的数据

    本文是将数据库数据转为Modbus服务端/从站,实现数据库内的数据也可以走Modbus协议通过网口或串口读写的案例,下图是通过智能网关的参
    发表于 03-14 13:44

    数据库数据恢复】Oracle数据库ASM实例无法挂载的数据恢复案例

    oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
    的头像 发表于 02-01 17:39 370次阅读
    【<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复】Oracle<b class='flag-5'>数据库</b>ASM实例无法挂载的<b class='flag-5'>数据</b>恢复案例

    求助,为什么在CAN数据库(.dbc文本文件)中找不到报文?

    我有CAN数据库dbc文件)。这是一个文本文件。此文件的扩展名为 dbc。在Vector CANdb++编辑器中打开它时,将填充J1939报文和CAN ID。 但是,在.dbc文本
    发表于 01-23 06:28

    基于Rust的嵌入符合ACID的键值数据库

    surrealkv -- 基于 Rust 的 low level、版本化、嵌入、符合 ACID 的键值数据库
    的头像 发表于 12-28 11:29 764次阅读

    轻量级数据库有哪些类型

    轻量级数据库是指具有小巧、灵活、高效的特点,适用于小规模项目和嵌入设备的数据库管理系统。下面是对轻量级数据库类型的详细介绍,包括关系型数据库
    的头像 发表于 12-20 11:29 1015次阅读

    关于JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值呢?
    的头像 发表于 12-06 13:46 710次阅读
    关于JSON<b class='flag-5'>数据库</b>

    oracle数据库的基本操作

    Oracle数据库是一种关系数据库管理系统(RDBMS),广泛应用于企业级应用中。它具有强大的功能和灵活的配置选项,可以满足复杂的数据处理需求。本文将介绍Oracle数据库的基本操作,
    的头像 发表于 12-06 10:14 548次阅读

    什么是JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值呢?文章速览:什么是JSON什么是JSON
    的头像 发表于 12-02 08:04 687次阅读
    什么是JSON<b class='flag-5'>数据库</b>

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 357次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型

    数据库数据恢复—SQLserver数据库被加密如何恢复数据

    一台服务器上的SQLserver数据库被勒索病毒加密,无法正常使用。该服务器上部署有多个SQLserver数据库,其中有2数据库及备份文件被加密,文件名被篡改,
    的头像 发表于 11-23 14:42 794次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQLserver<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    数据库数据恢复——MongoDB数据库介绍和数据恢复案例

    MongoDB数据库是文档数据存储,将文档存储在集合之中,不是像MySQL一样的关系型数据库
    的头像 发表于 11-08 15:04 777次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复——MongoDB<b class='flag-5'>数据库</b>介绍和<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复-oracle数据库报错无法打开的数据恢复案例

    oracle数据库数据恢复环境: 一台服务器,底层由12块硬盘组成一组磁盘阵列,上层操作系统上运行oracle数据库。 oracle数据库故障:
    的头像 发表于 10-12 14:00 703次阅读