1.はじめに
すでに反応性プログラミングJavaは、長い時間のプログラミングのために登場しました。高性能、イベント駆動型、コンピューティングリソースをフルに活用、よりエレガントな非同期プログラミングの経験が、それはまた、システムの過負荷を防止するためのバックプレッシャメカニズムを提供します。長時間Javaは唯一と応答するMongoDBは、Redisのは、これらおよびその他の非リレーショナルデータベースと対話しました。現時点では、我々のデータのほとんどは、ほとんどの場合には、リレーショナルデータベースに格納されたJava使用してJDBCをリレーショナルデータベースを操作するために、JDBCは同期、ブロックされています。迅速なサポートデータベース駆動型のプロトコルのための緊急の必要があります。現在、市場にある2つの応答データベース駆動型のプロトコルがあり、我々は彼らを見てください。
2.自分自身
ADBA [1]である Oracleは -led Javaの標準の非同期のデータベースアクセス APIを。その目的は、将来的に統合されたJava標準のリリース、現在の開発は、比較的遅く、現在だけであるOpenJDKのサンドボックスの特性[2]研究を使用する開発者のため。それは次のように意図されていない JDBCの拡張または代替が、完全に独立した API、 APIが提供 JDBC同じデータベースへの完全な非ブロックアクセスを。
3. R2DBC
春が正式に春5応答リリースのWebフレームワークの春WebFlux後に非同期応答データベースとの対話を満たすために緊急の必要性APIを。規格やドライブの欠如は、ピボタル(春の公式は)チームは、反応性リレーショナルデータベース接続(勉強し始めた反応性リレーショナルデータベース接続を)、と提案R2DBCの仕様APIを実行可能性を評価し、データベースベンダーが非同期非反応タイプをサポートしているに興味があるかどうかを議論するためにドライバを遮断します。最初だけはPostgreSQL、H2、MSSQL 3は、今のMySQLもに参加しました。R2DBC最新バージョンです0.8.1.RELEASE。外側が達成駆動に加えて、さらに提供** R2DBC **接続プール[3]とR2DBC剤[4] 。また、クラウドネイティブアプリケーションをサポートします。
達成するために、3.1利用可能R2DBCドライブ
現在、利用可能なドライバは、以下のとおりです。
-
cloud-spanner-r2dbc [5]:用于 Google Cloud Spanner的驱动程序 -
jasync-sql [6]: Java和 Kotlin的 R2DBC包装器,用 Kotlin编写的 MySQL和 PostgreSQL异步数据库驱动程序。 -
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 并分享其中的一些经验,多多关注
参考资料
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