13

postgresql db を組み込みの Derby db に切り替えるかどうかについて、現在調査中です。どちらもデータ層に Glassfish 3 を使用します。私たちが決定するのに役立つ意見や知識を持っている人はいますか?

ありがとう!

編集: 現在、いくつかのパフォーマンス テストを自分で作成しています。経験/直接の知識に基づいて、より多くの答えを探しています

4

7 に答える 7

18

ここに回答を投稿するのが遅れていることは承知していますが、将来、本番品質のデータベースよりも Derby を使用するという間違いを誰も犯さないようにしたいと考えています。この回答がいかに否定的であるかを前もってお詫び申し上げます。短い Q&A 回答でエンジニアリング チーム全体の不快感を捉えようとしています。

多くの小規模な顧客のデプロイメントで Derby を使用した経験から、テスト環境以外で Derby がどれほど有用であるかを真剣に疑うようになりました。私たちが持っていたいくつかの問題:

  • ロックのエスカレーションによって引き起こされるデッドロック - これは最大のもので、1 人の顧客に 1 ~ 2 週間に 1 回程度発生します。
  • 中断された I/O により、Solaris で Derby が完全に失敗します (他のプラットフォームでは問題にならない場合があります) - これらの障害から Derby を保護するためにシムを構築する必要がありました
  • MySQL/PostgreSQL が簡単に処理できる複雑なクエリを処理できない
  • バグのあるトランザクション ログの実装によりテーブルが破損したため、データベースをエクスポートしてから再インポートする必要がありました (破損したテーブルを単に削除することはできませんでした) が、その過程でテーブルを失いました - バックアップがあったことに感謝します
  • LIMIT構文なし
  • 複雑なクエリのパフォーマンスが低い
  • 大規模なデータセットのパフォーマンスが低い

組み込まれているという事実により、Derby は PostgreSQL よりも SQLite の競合相手と言えます。PostgreSQL は、世界最大の Web サイトのいくつかでマルチペタバイトのデータセットを格納するために使用されている、非常に成熟した製品品質のデータベースです。成長の準備ができていて、他の誰かのデータベース コードのデバッグに巻き込まれたくない場合は、Derby を使用しないことをお勧めします。私は SQLite の経験はありませんが、Derby よりもはるかに信頼性が低く、依然として人気があるとは想像できません。

実際、現在 PostgreSQL への移植を進めています。

于 2013-06-11T22:12:42.030 に答える
7

Derbyのパフォーマンスはまだ比較的遅いですが、Javaアプリケーションがどこに行く場合でも、データベースサーバーはどこに行くにしても、完全にプラットフォームに依存しません。Javaアプリのコピー先にDBサーバーをインストールすることを考える必要はありません。

私はJavaでMySQLを使用していましたが、データベースサーバーの組み込み実装をJavaアプリ内に配置することは、驚くべき、前例のない生産性、自由、柔軟性です。

いつでもどこでもDBサーバーを含めることは、私にとってまさに天国です!!!

于 2011-03-24T22:57:40.547 に答える
3

Postgresql と Derby を直接比較したことはありません。しかし、さまざまな状況で両方を使用した結果、Derby の信頼性は非常に高いことがわかりました。ただし、Derby の構成に注意して、アプリケーションのニーズに確実に適合するようにする必要があります。

于 2010-01-26T18:14:27.773 に答える
3

H2 データベースの統計サイトを見るときは、H2 の結論と比較して Derby を支持するフォローアップの議論を読む価値があります。 http://groups.google.com/group/h2-database/browse_thread/thread/55a7558563248148?pli=1

于 2010-10-14T14:20:32.163 に答える
1

ここのH2データベースサイトからのいくつかの統計: http://www.h2database.com/html/performance.html

于 2010-01-26T18:02:17.627 に答える
1

Derby ソース・コード配布自体の一部として組み込まれているパフォーマンス・テスト・スイートが多数あります。これらは、Derby の開発者が独自の Derby のパフォーマンス テストを実施するために使用されます。したがって、パフォーマンス テストの例が必要な場合、または追加のテストが必要な場合は、それらの使用を検討できます。Derby ソース配布の java/testing/org/apache/derbyTesting/perf という名前のサブディレクトリーを調べます。

于 2010-01-26T19:11:37.203 に答える