質問

いアイデアを実施する(本当に高性能なメモリデータベース/ストレー機構にJava.の範囲に収納20,000+javaオブジェクト、または5には秒です。
一部のオプション住所】高知県高知市:

純JDBC/データベースの組み合わせ

JDO

JPA/ORM/データベースの組み合わせ

オブジェクトデータベース

その他の貯蔵機構

何もオプションか?うち

編集:また必要のようにできるクエリのこれらのオブジェクト

役に立ちましたか?

解決

Prevayler (基本的には、シリアル化とバックアップを処理するメモリ内キャッシュ)のようなものを試すことができます。あなたのためにデータが持続し、トランザクション的に安全です)。他の同様のプロジェクトがあります。 大規模なプロジェクトに使用しましたが、安全で非常に高速です。

同じ20,000個のオブジェクトのセット、または5秒ごとに少なくとも20,000個の新しいオブジェクトではなく、多くの変更がある場合、変更をキャッシュし、定期的に変更をバッチモードで書き込むほうがよい場合があります(jdbcバッチ更新ははるかに高速です個々の行の更新よりも)。各書き込みをトランザクションでラップする必要があるかどうか、および変更ログの記録が必要か、変更を集約するだけかによって異なります。

編集:他の投稿がPrevaylerに言及しているように、私はそれが何をするかについてメモを残したいと思いました。 基本的に、ディスクにシリアル化されるPrevaylerインスタンスにラップされた検索可能/シリアル化可能なオブジェクト(通常、何らかの種類のマップ)を作成します。マップに直接変更を加えるのではなく、Prevaylerインスタンスに変更のシリアル化可能なレコード(変更命令を含むオブジェクトのみ)を送信して変更を行います。 Prevaylerのトランザクションのバージョンは、シリアル化の変更をディスクに書き込み、障害が発生した場合に最後の完全なバックアップをロードし、その変更をリプレイできるようにすることです。すべてのデータをロードするのに十分なメモリが必要ですが、かなり古いAPIなので、残念ながら汎用インターフェイスはありません。しかし、明らかに安定しており、広告どおりに機能します。

他のヒント

私のおすすめ H2.この"第二世代の"バージョンのHSQLDBを行い、原著作者にあります。 H2 できるユニット-スDAO層を必要とせずに実PostgreSQLデータベースである .

があ純グループのメーリングリストの作者トーマス-ミューラーは非対応のクエリ(あっ、ちょっとオシャレですが)。

これが最速のオプションかどうかはわかりませんが、には非常に満足しています。 H2 を使用するたびに。 Hypersonic(後にHSQLDBになりました)を最初に書いたのと同じ人によって書かれています。

非常に高速であるとされる別のオプションは、 Prevayler です。

これは少し古い質問ですが、最近ではパフォーマンスレベルが20,000 / sのデータベースがたくさんあります。どのデータベースを選択するかは、作成するクエリのデータ構造と種類によって異なります。また、全体的なボリュームにも依存します。

大量の時系列データ、約300,000 rec / sで同様の問題が発生し、新しいデータベースを作成することになりました NFSdb 、十分にシンプルなAPIと適切なパフォーマンス。 1秒あたり約2,000,000のオブジェクトの書き込みが可能であり、ORMなしで廃止しました。ストレージAPIは次のようになります。

JournalFactory factory = new JournalFactory("/mnt1/data/tick");

MyObject o = new MyObject();
try (JournalWriter<MyObject> writer = factory.writer(MyObject.class)) {

   o.setBlah(...);
   writer.append(o);

   // more appends here
   //
   writer.commit();
}

次のことを試してください。Hibernateおよび他のORMフレームワークで非常によく機能します

http://hsqldb.org/

OrientDB を試してみます。

クロニクルマップは、埋め込み可能な純粋なJava永続データベースであり、シンプルな java .util.Map インターフェース。単一のスレッドからの毎秒 100万クエリ/更新 、一貫した読み取り/書き込みパフォーマンスに耐え、マシンのコア数にほぼ線形にスケーリングします。

実際の数値を使用した最近のパフォーマンス調査を次に示します。

テラコッタもあなたの答えかもしれません。複数のVMでオブジェクトを共有できるため、負荷などを分散できます。

db4o

もご覧ください。

Berkeley DB for Java はメモリが速いデータベース。単純なオブジェクトグラフに非常に役立ちます。

hsqldbは非常に高速ですが、ACIDトランザクションセーフではありません。私が知っている最速のJavaデータベースはdb4oです:ベンチマーク

編集:Prevaylerはデータベースではないことに注意してください。 http://www.prevayler.org/wiki.jsp?topic=PrevaylerIsNotADatabase 。 RAMが不足していると、運が悪くなります。

H2は本当に素晴らしいです。確かに、メモリ、通常のサーバー、およびトランザクションで、すべて揃っています。ただし、パフォーマンスはオブジェクトデータベースとは比較されません。Db4oが言及しているように見えます。実際、Neodatisのパフォーマンスははるかに優れており、Mavenリポジトリですべてがうまくセットアップされています。フェラーリのように堅牢ではありませんが、高速ですが、Oracleのようなトラックではありません。

CSQL を試すことができます(オープンソースおよびエンタープライズバージョンで利用可能)ディスクベースのパフォーマンスが30倍向上データベースシステムとJDBCインターフェイスを提供します。スタンドアロンのメインメモリデータベースとして、またはMySQL、Postgres、Oracleデータベースに対する透過的なキャッシュとして動作するように設定できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top