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
    +关注

    关注

    20

    文章

    3006

    浏览量

    116830
  • 数据库
    +关注

    关注

    7

    文章

    4083

    浏览量

    68538
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TiDB分布式数据库运维实践

    TiDB 是 PingCAP 开发的开源分布关系型数据库,兼容 MySQL 5.7 协议,底层存储基于 TiKV(分布 KV 存储)和 RocksDB。它解决的核心问题是:当单机
    的头像 发表于 03-04 15:44 283次阅读

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

    一个Oracle数据库故障表现为ASM磁盘组掉线,ASM实例无法挂载(mount)。数据库管理员自行进行简单修复,未能成功,随后联系北亚数据恢复中心恢复数据
    的头像 发表于 02-24 15:19 201次阅读
    Oracle<b class='flag-5'>数据库</b>ASM实例无法挂载的<b class='flag-5'>数据</b>恢复案例

    国产数据库的AI战事

    国产数据库硝烟再起,Vastbase V100构筑企业智能基座
    的头像 发表于 10-24 20:45 4391次阅读
    国产<b class='flag-5'>数据库</b>的AI战事

    华纳云为游戏数据库选择高性能NVMe SSD存储

    的关键因素,尤其是在香港服务器租用环境中。 为何游戏数据库需要高性能存储 游戏数据库因其动态化和实时性需求,与传统数据库存在显著差异。这些需求包括: 高并发,可处理数千名玩家的同时交互。 低延迟,确保游戏流畅运行和即时
    的头像 发表于 09-30 16:03 1196次阅读

    电磁环境数据库管理系统平台软件解析

    电磁环境数据库管理平台软件解析(精简版)
    的头像 发表于 09-15 21:00 470次阅读
    电磁环境<b class='flag-5'>数据库</b>管理系统平台软件解析

    数据库性能优化指南

    作为一名在大厂摸爬滚打多年的运维老兵,我见过太多因为数据库性能问题导致的生产事故。今天分享一套完整的数据库优化方法论,从SQL层面到硬件配置,帮你彻底解决性能瓶颈!
    的头像 发表于 08-18 11:21 893次阅读

    数据库数据恢复—服务器异常断电导致Oracle数据库故障的数据恢复案例

    备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库
    的头像 发表于 07-24 11:12 838次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b>故障的<b class='flag-5'>数据</b>恢复案例

    三款主流国产数据库的技术特点

    随着数字经济的快速发展和数据安全要求的提升,国产数据库正迎来前所未有的发展机遇。在信创浪潮推动下,达梦数据库、TiDB、华为高斯数据库等国产数据库
    的头像 发表于 07-14 11:08 1336次阅读

    数据库数据恢复—MongoDB数据库文件丢失的数据恢复案例

    MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍
    的头像 发表于 07-01 11:13 779次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MongoDB<b class='flag-5'>数据库</b>文件丢失的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 836次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    达梦数据库常用管理SQL命令详解

    达梦数据库常用管理SQL命令详解
    的头像 发表于 06-17 15:12 7640次阅读
    达梦<b class='flag-5'>数据库</b>常用管理SQL命令详解

    oracle数据恢复—oracle数据库误执行错误truncate命令如何恢复数据

    oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据
    的头像 发表于 06-05 16:01 1765次阅读
    oracle<b class='flag-5'>数据</b>恢复—oracle<b class='flag-5'>数据库</b>误执行错误truncate命令如何恢复<b class='flag-5'>数据</b>?

    MySQL数据库采集网关是什么?有什么功能?

    MySQL数据库采集网关是一种用于连接、采集、处理并传输数据到MySQL数据库的中间设备或软件系统,通常部署在数据源与MySQL数据库之间,
    的头像 发表于 05-26 15:20 815次阅读

    SQLSERVER数据库是什么

    SQL Server 是由微软公司开发的一款 关系型数据库管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据库解决方案之一,尤其适用于Windows平台,但也
    的头像 发表于 05-26 09:19 1299次阅读

    MySQL数据库是什么

    MySQL数据库是一种 开源的关系型数据库管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行数据存储、管理和操作,广泛应用于Web
    的头像 发表于 05-23 09:18 1444次阅读