web-dev-qa-db-ja.com

Java組み込みデータベースの比較

私は、財務を管理するための小さな(Java)アプリケーションを開発するつもりです。埋め込みデータベースを使用する必要があると思いますが、この問題に関する経験はありません。 利用可能な製品の一部 を見てみましたが、どちらが自分に適しているかを判断できません。 H2[〜#〜] hsqldb [〜#〜]Derby および Berkeley DB は良いようです候補者、しかし、私はまだ彼らがお互いに比較する方法がわかりません。それらを比較し、どちらを使用するかを決めるのを手伝ってくれてありがとう。

アプリケーションにHibernateを使用する予定です(DBMS提供のAPIの使用を推奨しない限り)が、SQL参照ツール(スキーマの変更とデータの変更)を使用してデータベースを簡単に編集する機能も必要です。

ありがとうございました。

97
Hosam Aly

どちらか

  • [〜#〜] hsqldb [〜#〜] -OpenOfficeで使用され、テスト済みで安定しています。使い方は簡単です。 db-dataを編集する場合は、ファイルを開いて挿入ステートメントを編集するだけです。

または

  • H2 -より高速であると言われています(開発者、元々hsqldbも設計した)

どれを使用するかは、必要なパフォーマンスと安定性の程度によって異なります。

H2の開発者は、ニースのパフォーマンス評価を行っています。
http://www.h2database.com/html/performance.html

56
Sven Lilienthal

Apache Derby を使用して、組み込みデータベースのほとんどすべてのニーズに対応しています。 SunのDerbyベースのDB Java DBを使用することもできますが、Derbyの最新バージョンははるかに新しいものです。商用のネイティブデータベースがサポートする多くのオプションをサポートします。埋め込み:100万件以上のレコードを含むデータベーステーブルが問題なくありました。

私は約3年前にHSQLDBとHypersonicを使用していました。当時、いくつかの主要なパフォーマンスの問題があり、それらの問題のために私はそれからダービーに切り替えました。ダービーは、Apacheのインキュベーターにいたときでも安定しています。

34
Chris Dail

私のプロジェクトの1つでJava埋め込みデータベースを使用する必要があり、各データベースの長所と短所を理解するために多くの研究を行いました。人気のある埋め込みJavaデータベース(H2、HSQLDB、Derby、ObjectDB、Neo4j、OrientDB)、ご覧になれます。自分の要件に最も適していると考えたため、H2を選択しました。ブログへのリンク: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-Java-database.html 役に立てば幸いです!

28
Rohan Karwa

H2を使用すると、パフォーマンスはダービーよりもはるかに優れたものになります。詳細については http://www.h2database.com/html/performance.html を参照してください。

21
K2J

[〜#〜] hsqldb [〜#〜] は良い候補です(OpenOfficeで使用されているという事実はあなたの一部を納得させるかもしれません)が、そのような小さな個人的なアプリケーションにはオブジェクトデータベース(従来のリレーショナルデータベースの代わりに)?

プロジェクトの1つで DB4O を使用しましたが、非常に満足しています。オブジェクト指向なので、Hibernateレイヤー全体を必要とせず、オブジェクトを直接挿入/更新/削除/クエリできます!さらに、スキーマについて心配する必要はありません。オブジェクトを直接操作し、残りはDB4Oが行います!

この新しいタイプのデータベースに慣れるのに時間がかかるかもしれないことに同意しますが、 DB40チュートリアル をチェックして、DBを簡単に操作できることを確認してください!

編集:コメントで述べたように、DB4Oはクラスの新しいバージョンを自動的に処理します。さらに、アプリケーションの外部でデータベースを参照および更新するためのツールは次の場所から入手できます。 http://code.google.com/p/db4o-om/

14
Wookai

Java DB (SunのApache Derbyの配布)が出荷されるようになりましたinJDK 6!

私はJason Cohenのようなことをしたいと思っていましたが、これがJDKディストリビューションで最も簡単な方法のように見えると思っていました(先週のアプリの要件です)。それとも、私はそのように怠けているだけかもしれません。

12
Stu Thompson

本番環境では、HSQLDBをアプリケーションの「構成なし」オプションとして使用します。これにより、実際のデータベースをセットアップする手間をかけずに試用できます。

ただし、通常の使用ではnotをサポートしています。理由はいくつかあります。

  1. データのサイズに比例して遅くなります。
  2. アプリの外部からアクセスするのが難しい(カスタムレポートなど)。
  3. トランザクション/ディスク同期を正しく行うのは難しいので、データを失うのは簡単です。

少なくとも(2)と(3)については、回避方法がありますが、それは困難です。より簡単ですMySQLをインストールします。

7
Jason Cohen

neo4j は:

組み込みのディスクベースの完全にトランザクション対応のJavaテーブルではなくグラフに構造化されたデータを保存する永続エンジン

私はまだ試してみる機会がありませんでしたが、とても有望に見えます。これはSQLデータベースではないことに注意してください。オブジェクトグラフは永続化されるため、既存のアプリには適切でない可能性があります。

7
devstopfix

良い比較ツールはここにあります: http://www.jpab.org/All/All/All.html

また、DBMS/JPAの直接比較にも注目してください。

6
Uros Majeric

HSQLDBは​​大規模なアプリケーションで問題を引き起こす可能性がありますが、安定性はそれほど高くありません。

私が聞いた最高の(ただし、実際の経験ではない)berkleyDBです。しかし、それをオープンソース化しない限り、ライセンスのために腕と脚がかかります...これを参照してください http://www.Oracle.com/technology/software/products/berkeley-db/htdocs /licensing.html 詳細については。

追伸berkleyDBは、知らなかった場合のリレーショナルデータベースではありません。

4
Chii

これらの評価にどの基準を使用しますか?まだわからない場合は、今すぐ決定する必要はありません。アプリケーションをできる限りデータベース実装に依存しないようにしてください-適切なラッパー、データアクセスオブジェクトなどを提供し、すべての事実を手に入れて決定する必要があるときにこの決定を行ってください。

リレーショナルデータベースとSQLを使用している場合、上記はそれほど難しくありません(JDBCなどを使用)。データベースを切り替えたいときに、アプリケーションの機能が同じであると判断できるように、周囲のテストが十分にあることを確認してください。

私はしばらく前に同じ問題に遭遇しました。どのデータベースを使用するのかわからなかったため、最初のソリューションではDerby(またはHSQLDB?)を使用し、後でHSQLDB(またはDerby?どのソリューションが機能したか覚えていない)に切り替えることができました(パフォーマンスに関連する)問題があり、どのソリューションが実際に機能するかがわかりました。

4
Brian Agnew

私は 。NetとJavaの両方のDB4O の大ファンです。

初期リリース以降、パフォーマンスが大幅に向上しました。ライセンスモデルも悪くありません。オブジェクトのクエリに使用できるオプションが特に気に入っています。例によるクエリは非常に強力で使い慣れています。

4
Kilhoffer

ほとんどのことはすでに述べていますが、ペットプロジェクトのいくつかでHSQL、Derby、およびBerkely DBを使用したことを追加できますが、それらはすべて正常に機能しました。ですから、正直に言っても大したことではないと思います。言及する価値があることの1つは、HSQLがSQLステートメントを含むテキストファイルとして保存されることです。開発中に、テストを実行してデータを迅速にセットアップすることが非常に簡単になります。必要に応じて簡単に編集することもできます。あなたも同様に変更する必要がある場合は、すべてのデータベースに簡単にすべてを転送できると思います:)

4

私が正しいなら、H2はHSQLDBを書いたのと同じ人たちのものです。あなたが彼らのサイトのベンチマークを信頼するならば、それはずっと良いです。また、SunコミュニティがDerbyに急速に飛び込んだという考えもあります。

3
smartnut007

私は個人的にHSQLDBを好みますが、それは主に最初に試したためです。

H2は高速であると言われており、より良いGUIフロントエンドを提供します(これは汎用であり、JDBCドライバーで動作します)。

少なくともHSQLDB、H2、およびDerbyは、アプリケーションといくつかのツールで同時にDBにアクセスできるため、開発に最適なサーバーモードを提供します(通常、埋め込みモードでは許可されません)。

3
Joachim Sauer

私はこの投稿に少し遅れている(かなり遅い;-))と思うが、Java&のためのオープンソースのオブジェクト指向組み込みデータベースであるPerstを追加したいPerstはJava用のオープンソース/デュアルライセンスの組み込みデータベースです。ディストリビューションはGoogleのAndroidプラットフォームと互換性があり、Java ME。Androidベンチマークを作成し、件名に関するホワイトペーパーを作成しました...ここをご覧ください: http:// www。 mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=1

よろしくお願いします、クリス

3
Chris Mureen

私はダービーを使用しましたが、データ型変換関数、特に日付/時刻関数が本当に嫌いです。 (数値型)<-> Varchar変換は苦痛です。

DBステートメントでデータ型変換を使用することを計画している場合、組み込みDBの使用を検討するようにするには、学習が遅すぎます。

最新のDerbyバージョンのデータ型変換

3
Telcontar

SQLブラウジングに言及していることは承知していますが、質問の他のすべてのことから DB4O 、つまり 素晴らしい、シンプルなオブジェクトDB も検討することをお勧めします。

2
Fabian Steeg