web-dev-qa-db-ja.com

h2データベースはどの程度信頼できますか?

この質問をすると、H2データベースの現在のバージョンが2011年7月1日(ごく最近)にリリースされたことがわかります。とても健康的です。このペースは維持されますか?新しいリリースのペースが遅い場合、イベントはオープンソースコミュニティによって長期的にサポートされますか?

コスト上の理由から、私は現在、ハイパフォーマンスアプリにPostgresqlを使用することを検討しており、H2データベースには適切な機能セット(基本的には必要なものすべて)があるようです。 H2を使用することが正しい決定であるかどうかだけではありません。基本的に、私の決定は、サブスクリプションベースまたはコミュニティによる長期サポートに基づいている必要があります。

34
Muthu

このペースは維持されますか?

それが計画です。

オープンソースコミュニティによって長期間サポートされる予定ですか?

将来を予測するのは難しいです。それが、まだ誰もあなたの質問に答えていない理由だと思います:-)十分な人々がそれを使用しているので、サポートされると確信しています。 H2は多くの(オープンソースおよび商用)製品で使用されています。メーリングリストの質問にかなり多くの人が定期的に返信しています。 H2には現在多くのコミッターがいませんが、その理由の1つは、ユーザーが一般にその機能に満足していることと、現在の開発速度が十分に速く、コード品質が十分であることです。

サブスクリプションベースのサポートは現在利用できませんが、将来的には計画されています(いつか商用サポートを提供する計画でした)。それがまだ利用できない理由は、H2が会社を始めるのに十分な市場シェアをまだ持っていないからです。

33
Thomas Mueller

いくつかの追加情報を提供するために、2010年に大規模な[r]企業データベースシャードをH2からMySQLに切り替えました。最大の理由は、内部H2エンジンがシングルスレッドであることです。数十万または数百万の行を持つデータベース全体で、最適化されていない大規模なクエリが実行されると、他のすべてのデータベース操作が停止します。詳細は H2のドキュメント を参照してください。 H2の行ロックは、MySQLやPostgresに比べて比較的未熟なようです。

さらに、MySQLとPostgresは、独自にロールするのではなく、レプリケーションメカニズムも提供します。これにより、ダンプ中にH2データベースをブロックする代わりに、スレーブからデータベースシステムを「ライブ」でバックアップできます。

最後に、このパフォーマンステストは実行していませんが、H2は小規模から中規模のデータベースでは高速になっていますが、データベースのサイズ、特に同時クエリの数を増やすと、MySQLとPostgresは等しくなり、その後全体的なパフォーマンスが最も優れています。特に、クエリ時間の分布に注目してください。

私たちはブティック、メモリ、テストデータベースにH2を使用し続け、非常に成功しています。トーマスに感謝します!

H2は素晴らしいデータベースエンジンです。 H2に関係のない問題を解決した後、PostgreSQLとMySQL(どちらもまだサポートされています)からH2に切り替えました。 H2は私たちの主要なデータベースの選択となりました。

速度が主な理由ですが、他にもあります。埋め込みモードは驚くべきものであり、ポータブルデバイスにソフトウェアをインストールしたり、Dropboxを介してクラウド上でデータベースを共有したりする柔軟性さえ与えてくれます!

「Datanucleus」を介して「永続的依存」しているため(トリガーや手順などはありません)、多くの機能は使用しませんが、アプリはH2をプッシュするのに十分複雑です!そして、それは完璧に提供します。

23
marcolopes

その理由は、H2が引き続きアウトパフォームし続けているためです。 2019年現在、H2はすばらしいデータベースです。私たちは4年以上、すべてのスタンドアロンアプリケーションで使用しており、SQLiteとMySQLの間のギャップを最小限に抑えています。 MySQLと同じかそれよりも高速に実行されます。

H2はどこに適していますか?

  • スタンドアロンアプリケーション
  • イントラネット/ LANアプリケーション
  • Javaのみのデプロイメント
  • 組み込みおよびサーバーモード

SQLiteよりも優れている理由

  • SQLiteよりも多くのデータ型。
  • ブールデータ型のサポート。 SQLiteでは使用できません。
  • SQLiteのパフォーマンスは、約15列のテーブルの行数が50,000を超える(多かれ少なかれ)場合、特定のケースで低下しました。 H2ではこの問題は見つかりませんでした。いつものように演奏し続けました。
  • SQLiteのような単一のファイルのように見えても、H2は暗号化されています。パスワードで保護されたマルチユーザーデータベースです。この機能はSQLiteでは使用できません。
  • アプリケーションと一緒にパッケージ化すると、わずか2MB程度のスペースで済みます。
  • 組み込みのデータベース管理コンソールがあり、これも同じ〜2MBです。
  • H2は、Androidアプリケーション開発に使用できます。

MySQLとの比較:

  • ブールデータ型のサポート。 MySQLでは利用できません。
  • 今見ているように、H2はMySQLとほぼ同等のパフォーマンスを発揮します。更新クエリを実行すると、パフォーマンスが向上する場合もあります。
  • お客様は、非常に高速に動作するソフトウェアを見て喜んでいます。
  • MySQLで使用する理由は、現在、商用のスタンドアロンアプリケーションでも無料で使用できるためです。
  • Check制約のサポート。MySQLでは最近まで利用できませんでした。

PostgreSQLとの比較:

  • この回答の冒頭で指定した作業/デプロイメント環境の場合、PostgreSQLよりも絶対に高速です。
  • H2での更新操作はPostgreSQLよりもはるかに高速です
  • 誰かがH2とPostgreSQLを完全に比較しようとする場合は、それを行わずに、PostgreSQLとGiant OracleDBを比較してください。 H2は/と比較できません。機能的にPostgreSQLで置き換えることはできません。

テクニカルサポートを提供している間は、処理が最も簡単です。ドラッグアンドドロップと同じくらい簡単に共有できます。

4
AbsoluteDev