BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HibernateがReactive APIのバージョン1.0をリリース

HibernateがReactive APIのバージョン1.0をリリース

Lire ce contenu en français

ブックマーク

原文(投稿日:2021/11/10)へのリンク

新たなHibernate Reactive 1.0は、人気のあるHibernate ORM向けのリアクティブAPIの最初の安定バージョンだ。ノンブロッキングデータベースドライバとデータベースとのリアクティブスタイルのインタラクションをサポートする。

Hibernate Reactiveは、ノンブロッキングデータベースクライアントを活かすように設計されたORM実装である。操作は、同期呼び出しではなくリアクティブストリームに基づいて構築され、Java CompletionStageインターフェイスのチェーンを使って表される。

従来のJDBC、JPA、Hibernate ORMアプローチを使ったデータベースとのインタラクションは同期的であり、ブロッキングI/O呼び出しが行われていた。このソリューションは、非同期の非ブロッキングプロセスとしての特権が与えられているリアクティブアプリケーションに最適でない。

箱から出して、Hibernate ReactiveはPostgreSQL、MySQL、DB2、SQL Server、CockroachDBのVert.xクライアントをサポートする。Oracleクライアントはまだ取り組み中である。これは、リアクティブ環境で利用され、Vert.xフレームワークとQuarkusフレームワークに完全に統合されていることを意味する。

データベースは従来、ブロッキングコールで使用するように設計されているため、どのような状況でもリアクティブスタイルのパフォーマンスが向上するという保証はない。最近、ブログの投稿で、Red HatのQuarkus創設エンジニアでHibernateチームリーダーのSanne Grinovero氏が、リレーショナルデータベースを操作するときにHibernate Reactiveに切り替える価値があるかどうかを調査した。

Grinovero氏は、複数のクエリにおいてTechEmpowerスイートを使用して、下のグラフで示される高負荷(1秒あたりのリクエスト数)での応答遅延(ミリ秒単位)のデータを生成した。

彼は次のように結論づけている。

10ミリ秒以内の応答が要求されるSLAがあると仮定します。この単一のマシンの負荷が20,000リクエスト/秒の制限を超えない限り、Hibernate ORM「クラシック」はSLA要件を満たす形で実行できると結論付けることができます。これは非常に妥当ですが、それを超えると、応答遅延はすぐに劣化します。

一方、Hibernate Reactiveを使うと、負荷を約35,000リクエスト/秒を超えてプッシュした場合でも、同じSLA10ms以内で応答を配信できるように見えます。それは明らかに優れています。そこには大きな差があります。

別のベンチマークでは、Hibernate Reactiveの古いベータバージョンと最新のベータバージョンを比較した場合のパフォーマンスの向上を示している。

以下のグラフは、クライアント/スレッドの数ごとのスループットを表している。

2020年12月に最初に導入されたHibernate Reactiveはまだ初期段階にある。「従来の」Hibernate ORMと比較していくつかの制限がまだ存在します。例えば、サポートされていないアノテーション、SourceCollectionId. だ。一方、同じパラダイムを使用しているため、リアクティブアプリケーションに対して簡単に採用できる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT