-1

(本当に)高性能のインメモリデータベース/ストレージメカニズムを実装するためのアイデアが必要です。20,000以上のオブジェクトを保存する範囲で、各オブジェクトは5秒ごとに更新されます。 FOSSソリューションが欲しいのですが

私の最良の選択肢は何ですか?あなたの経験は何ですか?

私は主にJavaで作業していますが、データストアのパフォーマンスが優れている必要があるため、データストアソリューションはJava中心である必要はありません。

また、これらのオブジェクトをクエリできるようにする必要があり、プログラムの起動時にすべてのオブジェクトを復元できるようにする必要があります。

4

9 に答える 9

3

SQLiteは、インメモリデータベースをサポートするオープンソースの自己完結型データベースです(に接続するだけです:memory:)。多くの一般的なプログラミング言語のバインディングがあります。これは従来のSQLベースのリレーショナルデータベースですが、別のサーバーを実行するのではなく、プログラムのライブラリとして使用するだけです。かなり速いです。十分に速いかどうかはわかりませんが、実験する価値があるかもしれません。

Javaドライバー

于 2009-01-27T21:34:51.833 に答える
1

5秒ごとに20Kオブジェクトを更新しますか、それとも5秒ごとに20Kの1つを更新しますか?

どんな物?従来のRDBMSでは不十分なのはなぜですか?

于 2009-01-27T21:30:54.290 に答える
1

HSQLDBPrevaylerをチェックしてください。Prevaylerは、従来のRDBMSからのパラダイムシフトです。これは、私が多くのプロジェクトで使用したパラダイム(つまり、特にPrevaylerではない)であり、実際のメリットがあることがわかりました。

于 2009-01-27T21:32:42.570 に答える
1

クエリを実行する方法によって異なりますが、memcachedを調べましたか?

http://www.danga.com/memcached/

他のオプションには、MySQL MEMORYテーブル、PHPを使用している場合はAPCキャッシュが含まれます。

プロジェクト/要件に関する詳細が役立つでしょう。

于 2009-01-27T21:33:44.533 に答える
1

インメモリストレージ?

1)すべての構造にインデックスが付けられる単純なC'malloc'配列。

2)berkeleyDB:http ://www.oracle.com/technology/products/berkeley-db/index.html 。独自のインデックス(セカンダリデータベース)を構築し、評価するSQL式がないため、高速です。

于 2009-01-27T21:33:46.857 に答える
1

ここにリストされている製品のいくつかを見てください: http://en.wikipedia.org/wiki/In-memory_database

于 2009-01-27T21:47:17.923 に答える
0

どのレベルの耐久性が必要ですか?1つごとにデータをディスクに書き戻す場合、トランザクション数の観点から、ほとんどのIOハードウェアでは5秒ごとに20,000の更新がおそらく困難になります。

一部の更新を失う余裕がある場合は、データベースとOSがそれをサポートしていれば、かなり安価なハードウェアで問題なく100ミリ秒ごとにディスクにフラッシュできます。

頻繁にディスクにフラッシュしたくないのが本当にインメモリデータベースである場合、それはかなり些細なことのように聞こえます。H2はかなり良いと聞きましたが、SQLiteも同様に機能する可能性があります。適切に調整されたMySQLインスタンスもそれを行うことができます(しかし、より複雑かもしれません)

于 2009-01-27T21:38:17.973 に答える
0

Oracle TimesTen インメモリー データベース。参照: http://www.informationweek.com/whitepaper/Business-Intelligence/Datamarts-Data-Warehouses/oracle-timesten-in-memory-databas-wp1228511232361

于 2009-01-27T21:39:25.520 に答える
0

Chronicle Map純粋な Javaキー値ストアです

  • 1 つのスレッドから 1 秒あたり 100 万回の書き込みを維持する、非常に高いパフォーマンスを備えています。高速なデータベースを Java で作成できないというのは神話です。
  • シリアライズ可能な Java オブジェクトをシームレスに格納およびロードし、シンプルなMapインターフェースを提供します。
  • LGPLv3

多くの「テーブル」がないため、本格的な SQL データベースは過剰なソリューションになる可能性があります。インデックスとクエリは、バニラ Java コードによって手動で更新される少数の個別のキー値ストアで実装できます。Chronicle Mapは、必要に応じて、このような更新を相互に分離して同時に行うメカニズムを提供します。

于 2016-07-08T16:41:53.337 に答える