6

私は NoSQL が初めてで、構築しようとしているアプリケーションに最適な NoSQL 実装を見つけようとして頭を悩ませています。

私の Java アプリケーションは、単層ニューラル ネットワークをモデル化するため、数百万から数十億のエントリを含むインメモリ ハッシュマップを必要とします。現在、Troveを使用して、プリミティブをキーと値として使用できるようにして、マップのサイズを縮小し、アクセス速度を上げています。マップは、外側のマップのキーが long で、内側のマップが long/float キー/値を持つマップのマップです。

アプリケーションの起動時に、ディスクからマップのマップに保存された状態を読み取ることができる必要があります。マップのマップへの変更も、継続的に、またはスケジュールされた間隔に従って、ディスクに保存する必要があります。

私は最初、OrientDBのドキュメント DB とオブジェクト DB に惹かれましたが、現時点ではどちらが優れているかはまだわかりません。その後、 Redisに出くわしました。これはキー バリュー ストアであり、ディスクにダンプできるインメモリ データセットで動作し、マスター/スレーブ レプリケーションを含みます。ただし、マップの値が文字列以外になる可能性があるようには見えません。

自分のニーズに対するソリューションを適切な場所で探していますか? 現在、Redis のメモリ内およびマスター/スレーブの側面が気に入っていますが、データ構造が単純な文字列よりも複雑で、プリミティブなキー/値型で Trove を使用できるため、OrientDB のオブジェクト/ドキュメント機能が気に入っています。は非常に有利です。その逆よりも、読むのが安くて書くのが高いほうがいい。

考え?

4

5 に答える 5

4

Troveのデータ構造をディスクに直接シリアル化してみませんか?ドキュメント( http://trove4j.sourceforge.net/javadocs/serialized-form.html )によると、それに対する何らかのサポートがあるように見えますが、それは愛情を込めてではなく、すべて自動生成されたくだらないものであるため、わかりにくいです-チュートリアルを作成しました。それでも、ユースケースでは、適切なデータベースが必要な理由は明らかではないため、おそらくKISSが適用されます。

于 2013-02-20T14:13:21.850 に答える
2

Java-Chronicleをチェックしてください。これは、低レイテンシの永続性ライブラリです。このタイプのデータに対して優れたパフォーマンスを提供することがわかると思います。

于 2013-02-21T11:59:03.150 に答える
2

OrientDBには、インデックス、グラフ、トランザクション、および JSON としての複雑なドキュメントを備えた最も柔軟なエンジンがあります。なぜだめですか?

于 2013-02-20T18:35:28.447 に答える
1

Redis は、ドメイン モデルに便利なリスト、(ソートされた) セット、またはハッシュなどの単純な文字列よりも複雑なデータ構造をサポートします。一方、ニューラル ネットワークは、その構造に応じて、OrientDB の豊富なグラフ機能を活用できます。

于 2013-02-25T08:07:58.707 に答える
1

これに Redis を使用する場合は、ZSET または HASH のいずれかを基になる構造として使用するのが最適です (Redis は、文字列値だけでなく構造をサポートします)。値/値の並べ替え順序に基づいてマップの一部を取得する必要がない限り、(メモリと速度の点で) HASH がおそらく最適です。

したがって、おそらく long -> {long:float, ...} を使用したいと思うでしょう。つまり、long/float マップへの long のマッピングです。次に、HGET を使用してマップ内の個々のエントリをフェッチするか、HMGET を使用して複数のエントリをフェッチするか、HGETALL を使用して完全なマップをフェッチできます。コマンドリファレンスhttp://redis.io/commandsを見ることができます

スペース節約の面では、予想される HASH のサイズに応じて、パフォーマンスへの悪影響を限定的またはまったくなくして、より少ないスペースを使用するように HASH を調整できる場合があります。

永続性に関しては、Redis をスナップショットで実行するか、追加専用ファイルで増分保存を使用することができます。ここで永続化のドキュメントを参照できます: http://redis.io/topics/persistence

より鋭い質問をしたい場合は、メーリング リストhttps://groups.google.com/forum/?fromgroups=#!topic/redis-db/33ZYReULiusにアクセスしてください。

于 2013-02-20T19:20:52.357 に答える