3

私は自分のプロジェクトの1つ(ヘルスケア用のセマンティック検索エンジン)にトリプルストアデータベースを使用していますが、それはかなりうまく機能します。トリプルストアの上にキーバリューストアのレイヤーを使用することで、パフォーマンスを向上させることを検討しています。ディープセマンティック処理を行うため、トリプルストアクエリは遅くなります。

これが私がパフォーマンスを改善することを計画している方法です:

1)トリプルストアにクエリを実行して、すべてのクエリ用語に対してHadoopジョブを毎日実行します。2)これらの結果をキャッシュすると、クラスター内にキー値が格納されます。3)ユーザーがクエリ用語を検索する場合、トリプルストアを検索する代わりに、キー値ストアが最初に検索されます。トリプルストアは、クエリ用語がキー値ストアに見つからない場合にのみ検索されます。

保存する予定のキーと値のペアは、「文字列」から「POJOマッピングのリスト」です。BLOBとして保存できます。

どのKeyValueストアを使用するかについて混乱しています。私は主にフェイルオーバーと負荷分散のサポートを探しています。必要なのは、上記の機能を提供する単純なKeyValueStoreだけです。値やその他の機能内で並べ替え/検索する必要はありません。

私が間違っている場合は訂正してください。memcachedとRedisはメモリ内にあるため、より高速になると想定しています。しかし、Redis(Jredis)またはmemchaced(Spymemcached)のJavaクライアントがフェイルオーバーをサポートしているかどうかはわかりません。メモリと永続ストレージのどちらを使用するかわかりません。Voldemort、Cassandra、HBaseも検討しています。全体的なキー値は、約2GBから4GBのサイズになります。これに関するポインタは本当に役に立ちます。

私はnosqlとKeyValueストアに非常に慣れていません。詳細が必要な場合はお知らせください。

4

5 に答える 5

1

memcached のチュートリアル記事を読みましたか (memcached インスタンスはキー ハッシュに基づいて負荷を分散するため、ロード バランシングの側面について説明しています。また、spymemcached が接続障害を処理する方法についても説明されています):

Java エンタープライズ パフォーマンスのために Memcached を使用する、パート 1: アーキテクチャとセットアップhttp://www.javaworld.com/javaworld/jw-04-2012/120418-memcached-for-java-enterprise-performance.html

Memcached を使用して Java エンタープライズ パフォーマンスを向上させる、パート 2: データベース駆動型 Web アプリケーションhttp://www.javaworld.com/javaworld/jw-05-2012/120515-memcached-for-java-enterprise-performance-2.html

memcached でのエンタープライズ グレードのフェイルオーバー/クロス データ センター レプリケーションのサポートについては、これらの機能を提供するCouchbaseを使用する必要があります。製品は memcached ベースから進化しました。

于 2012-11-20T20:39:13.153 に答える
0

Google App Engineが提供するmemcacheのトリプル ストアとキャッシュ データを使用しており、正常に動作します。これにより、トリプル ストアを介した sparql クエリのオーバーヘッドが削減されました。

于 2012-11-22T14:12:44.190 に答える
0

トリプルストアの前にデータをキャッシュしたいだけなので、ディスクベースの、または複製/分散されたキー値ストアを使用するのは無意味に思えます。基本的に必要なのは、クエリが実行されるマシン上でクエリの前にデータをキャッシュすることだけです。「キーと値のストア」​​はなく、ごく普通の Java キャッシング ソリューションです。

2016 年の Java の最適なキャッシュはCaffeineです。

于 2016-07-08T16:25:55.227 に答える
0

インフラストラクチャを構築してキャッシュをロードする前に、既存のシステムの上に memcached を追加してみてください。まず、現在のパフォーマンスをよく測定します。JMeter または同様のツールをお勧めします。アプリケーションでのワークフローは次のとおりです。memcached を確認します。存在する場合は完了です。そうでない場合は、トリプル ストアに対してクエリを実行し、結果を memcached に保存します。これにより、クエリが繰り返される場合にパフォーマンスが向上します。Memcached は、与えられたメモリを効率的に使用し、あまり使用されないものを捨てます。フェイルオーバーはアプリケーションによって処理されます (memcached にない場合は、既存のインフラストラクチャを使用します)。

于 2012-11-20T22:27:47.503 に答える
0

cassandra のみが機能と CQL の完全なサポートについて言及しているため、維持に役立ちます。それ以外の場合は、別の方向に目を向ける必要があります。

重い、レプリケートされた、メモリよりも大きなキー値ストアを書き込む

于 2012-11-28T23:40:30.517 に答える