H2とHSQLDBのどちらが優れていますか?[閉まっている]


85

HSQLDB2.0はまもなくリリースされます。私の知る限り、ほとんどのユーザーはHSQLDBよりもH2を好むので、H2よりもパフォーマンスが優れているのではないかと思います。HSQLDB2.0のMVCCサポートに興味があります。H2のMVCCはまだ実験段階であることがわかりました。サポート/ドキュメント化、並行性、パフォーマンスに関して、どちらが優れていますか?


6
あなたのユースケースは何ですか?データに対してどのようなクエリを実行しますか?データの大きさはどれくらいですか?アプリケーションの読み取りまたは書き込みは重いですか?
マット

28
もう1つの完全に良い質問は終わりました。
rtcarlson 2014

質問が側面の1つとしてのみ言及しているにもかかわらず、回答に焦点を当てることがパフォーマンスであるように見えるのは魅力的だと思います。サポート/ドキュメント、使いやすさ(使いやすさ、直感性、機能セット)、信頼性など、他の分野にももっと興味があります。
StaxMan 2015年

回答:


61

私は2011年にこの回答を提供したことに注意してください。それは時代遅れかもしれません

私の会社は、両方のデータベースをサポートするデータベース抽象化ライブラリ(jOOQ)を開発しています。私たちの統合テストは、ストアドプロシージャと関数、配列、ネストされた選択などの呼び出しを含む多くの機能をカバーしています。DMLに関する限り、小さなデータベースHSQLDB 2.1よりもわずかに高速であることがH2 1.3わかります。

ただし、HSQLDBは​​、小さなデータベースの場合でも、DDL操作およびインスタンスの起動/シャットダウン時にH2を大幅に上回ります(H2は、データベースの起動ごとにjavacを使用して格納された関数を新たにコンパイルするためです!)。これは、保存された関数を格納する方法によって異なります。どうやら、それはかなりjOOQ固有の「問題」です。ThomasMuellerのコメントも参照してください。

一方、私はユーザーtrashgodに同意します。妥当なスキーマとユースケースに対して、パフォーマンスをテストする必要があります。


7
保存された関数は、「ソースコードとして」保存されている場合にのみ再コンパイルされます。これは、HSQLDBでは使用できない機能です(私が知る限り)。プリコンパイルされたストアド関数を使用する場合、そのようなオーバーヘッドはありません。
トーマスミュラー

2
@ThomasMueller:ありがとう、私はそれを知りませんでした。それは私の統合テストを大幅にスピードアップするのに役立ちます。それに応じて答えを調整します。HSQLDBには、より強力なIMOであるPL / SQLのような手続き型言語があります。ただし、その言語がプリコンパイルされているのか、インタープリター型であるのかはわかりません...
Lukas Eder

45

HyperSQLH2 Databaseはどちらもかなり透過的であるため、特定の用途にどちらが適しているかを判断するには、テストが最善のアプローチとなる可能性があります。一方他方を含む比較が利用可能です。それらは共通の遺産を共有しており、どちらもオープン ソースです。


10
「ゴミ箱は重要な設計ツールです」—loc。引用。
trashgod 2014

3
その「遺産」リンクをありがとう。彼らは歴史をかなり素晴らしく要約しています。最初にHSQLDB(Hypersonic SQL)が登場し、次にH2が登場しましたが、HSQLDBとH2は同じコードを共有しておらず、現在は別々のプロジェクトです。
specialk 2016年

1
@ specialk1st:そうです、この場合の遺産は一般的な作者であり、一般的なコードではありません。
trashgod 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.