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并分享其中的一些经验,多多关注。
涨价后依然千元以内 魅族魅蓝note5优势巨大
配网故障定位|在应对输电故障中的优势
Pico Technology下一代示波器软件PicoScope7,提升性能和用户体验
dinput8.dll是什么
大联大推出汽车电动尾门方案 满足脚踢感应开门的应用场景
响应式数据库驱动协议ADBA和R2DBC
基于PowerPC 405微处理器和VME总线实现以太网接口设计
打响流量争夺战,三大运营商纷纷推出流量卡竞争
华为开发者大会2021直播开始!
电源直流模块的电磁共模骚扰的回路构成分析
防疫隔离NB智慧物联门磁探测器推荐
可穿戴、AR/VR、IoT领域如何解决用户痛点
充电桩高频变压器的作用
朗宇芯上下料机械手控制系统赋能机加工行业
亚马逊希望使用全息图将您的房间变成增强现实
内蒙古各类场所上线健康码识别终端,可实现手持身份证核验健康码
阿里云、腾讯云、华为云的配置对比
SIGGRAPH 2023 | 通过 NVIDIA OptiX 8 实现灵活且强大的光线追踪功能
如何保护自己的设计思路不被盗取?maxim推出地无法克隆ic或可帮到您
去噪效果对比的主观表现