10

いくつかの単純なデータのストレージファイル形式を表形式で作成する必要があり、HDF5を使用しようとしていましたが、いくつかの問題のために諦めました。組み込みデータベースの使用を再検討して、それらが私のアプリケーションには十分な速さです。

1つのファイルにデータを保存するオプションがある評判の良い組み込みJavaデータベースはありますか?私が知っているのはSQLite(Javaバインディングが利用可能)だけです。H2とHSQLDBを試しましたが、箱から出してすぐに複数のファイルが作成されるようで、1つのファイルにデータベースを含めることが非常に望ましいです。

編集:適度に速いパフォーマンスが重要です。オブジェクトストレージはそうではありません。パフォーマンス上の懸念から、整数とBLOBのみを格納する必要があります。(+いくつかの文字列ですが、パフォーマンスに重要なものはありません)

編集2:ストレージデータの効率は大規模なデータセットにとって重要であるため、XMLは使用できません。

4

10 に答える 10

4

PAGE_STORE オプションを指定して最新の H2 ビルドを使用する場合、H2 は 1 つのファイルのみを使用します。新しい機能なので、しっかりしていないかもしれません。

于 2009-07-21T18:28:32.217 に答える
3

読み取りアクセスのみが必要な場合、H2 はzip ファイルからデータベース ファイルを読み取ることができます。

同様に、永続性が必要ない場合は、H2 のインメモリのみのバージョンを使用できます。

読み取り/書き込みアクセスと永続性の両方が必要な場合、標準の SQL タイプのデータベースではうまくいかない可能性があります。これらはほとんどすべて、インデックス ファイルとデータ ファイルを別々に均一に維持するためです。

于 2009-07-21T18:24:12.880 に答える
2

データをファイルに保存するオブジェクトデータベースを使用したことがあります。Javaと.NETインターフェースを備えています。あなたはそれをチェックしたいかもしれません。それはdb4oと呼ばれます。

于 2009-07-21T17:03:02.967 に答える
2

Chronicle Mapは、組み込みの純粋な Java データベースです。

  • データを 1 つのファイルに保存します。つまり、

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • Chronicle Map は成熟しています (実際に使用されている間、重大なストレージ バグは数か月間報告されていません)。

  • 独立したベンチマークは、Chronicle Map がJava の最も高速最もメモリ効率の高いキー値ストアであることを示しています。

ユースケースの主な欠点は、Chronicle Map が単純なキー値モデルのみをサポートすることですが、その上により複雑なソリューションを構築できます。

免責事項: 私はクロニクル マップの開発者です。

于 2016-07-08T11:58:25.587 に答える
1

別のプログラムと一緒に出荷できる小さくて高速なデータベースを探している場合は、Apache Derbyをチェックします。組み込みデータベースをどのように定義するかわかりませんが、一部のプロジェクトでは、これをチェックインできるデバッグデータベースとして使用しました。ソースであり、すべての開発者マシンで瞬時に利用できます。

于 2009-07-21T17:06:10.930 に答える
1

jdbmをチェックしてみてください。いくつかのプロジェクトで使用していますが、非常に高速です。ACID タイプのアプリに使用している場合は 2 つのファイル (データベース ファイルとログ ファイル) を使用しますが、確実な ACID が必要ない場合は直接データベース アクセス (ログ ファイルなし) にドロップできます。

JDBM は整数とブロブ (必要なものは何でも) を簡単にサポートし、非常に高速です。これは実際には並行性を考慮して設計されていないため、複数のスレッドがある場合は自分でロックを管理する必要がありますが、シンプルで堅牢な組み込みデータベースを探している場合は、これが適切なオプションです。

于 2009-07-22T03:19:45.317 に答える
1

これは SQL エンジンではありませんが、XStreamでPrevaylerを使用すると、すべてのデータを含む単一の XML ファイルを簡単に作成できます。(Prevayler はこれをスナップショット ファイルと呼んでいます)。

これは SQL ベースではないため、少々手間がかかりますが、その自己完結型の性質により、開発 (特に優れたテスト) がはるかに容易になります。さらに、信じられないほど高速で信頼性があります。

于 2009-07-21T17:12:04.990 に答える
0

あなたはsqliteについて言及したので、ネイティブデータベースを気にしないと思います(適切なJavaバインディングが利用可能である限り)。 Firebirdは Java とうまく連携し、デフォルトで単一ファイル ストレージを実行します。

単一ファイルの要件がない場合は、H2 と HSQLDB の両方が優れた選択肢になります。

于 2009-07-21T17:06:49.103 に答える
0

今のところ、永続的なデータ ストレージに HDF5 を使用し続け、H2 やインメモリ インデックス用の他のデータベースと組み合わせて使用​​するつもりです。私が持っている Java ドライバーで SQLite に BLOB を使用させることができず、組み込みの Firebird を起動して実行することもできず、PAGE_STORE で H2 をまだ信頼していません。

于 2009-07-21T18:48:34.250 に答える