私は自分のプロジェクトの1つ(ヘルスケア用のセマンティック検索エンジン)にトリプルストアデータベースを使用していますが、それはかなりうまく機能します。トリプルストアの上にキーバリューストアのレイヤーを使用することで、パフォーマンスを向上させることを検討しています。ディープセマンティック処理を行うため、トリプルストアクエリは遅くなります。
これが私がパフォーマンスを改善することを計画している方法です:
1)トリプルストアにクエリを実行して、すべてのクエリ用語に対してHadoopジョブを毎日実行します。2)これらの結果をキャッシュすると、クラスター内にキー値が格納されます。3)ユーザーがクエリ用語を検索する場合、トリプルストアを検索する代わりに、キー値ストアが最初に検索されます。トリプルストアは、クエリ用語がキー値ストアに見つからない場合にのみ検索されます。
保存する予定のキーと値のペアは、「文字列」から「POJOマッピングのリスト」です。BLOBとして保存できます。
どのKeyValueストアを使用するかについて混乱しています。私は主にフェイルオーバーと負荷分散のサポートを探しています。必要なのは、上記の機能を提供する単純なKeyValueStoreだけです。値やその他の機能内で並べ替え/検索する必要はありません。
私が間違っている場合は訂正してください。memcachedとRedisはメモリ内にあるため、より高速になると想定しています。しかし、Redis(Jredis)またはmemchaced(Spymemcached)のJavaクライアントがフェイルオーバーをサポートしているかどうかはわかりません。メモリと永続ストレージのどちらを使用するかわかりません。Voldemort、Cassandra、HBaseも検討しています。全体的なキー値は、約2GBから4GBのサイズになります。これに関するポインタは本当に役に立ちます。
私はnosqlとKeyValueストアに非常に慣れていません。詳細が必要な場合はお知らせください。