2012-01-24 9 views
2

私は、15秒ごとに変化する動的な10k空間エントリを処理するリアルタイムのWebサービスを構築しようとしています。 移動車を想像してください私は最新の値に対処する必要があります。だから私は古い値をデータベースに保存したくない。頻繁に変化する値をメモリに保持する方法

私はSphinxやLuceneを値の全文検索サーバーとして使いたいのですが、15秒間これらの値を「保持」する方法はわかりません。

質問: 私はMongoDBのは、MySQL内の値、XML、フラットファイル、またはメモリ内のオブジェクトとして直接それらを格納し、まだそれらを操作することができ、その値を更新する方法はあり保存すべきか?

ありがとうございます。

+1

エンティティに「オブジェクトの性質」を持たせたい場合は「Neo4j」を見てください。 – aitchnyu

+0

空間クエリを作成する必要はありますか? – Jokin

+0

はい、これは私が実際に探しているものです。SphinxまたはSolrとRedisを組み合わせようとしています。何か案は? –

答えて

5

私はあなたがRedisのを見てお勧め:

Redisのは、オープンソース、高度なキーと値のストアです。キーには文字列、 ハッシュ、リスト、セット、ソートセットが含まれていることが多いので、多くの場合、 がデータ構造サーバーと呼ばれます。

でアトミック操作を実行できます(文字列への追加など)。 ハッシュの値をインクリメントする。リストにプッシュする。コンピューティングの設定交差点、組合と の違い。または並べ替えで最高位のメンバーを取得する を設定します。

優れたパフォーマンスを実現するため、Redisは のメモリ内データセットで動作します。ユースケースに応じて、を永続化することができます。データセットを毎回ディスクにダンプするか、または をログに追加して永続化することができます。

http://redis.io/topics/introduction

0

あなたはメモリインデックスに使用できる情報を永続化する必要がない場合は、空間的なクエリと組み合わせてリアルタイム機能の近くにSolrを使用することができます。予想される1秒あたりのクエリ数と最大レスポンス時間に応じて、ハードウェアに合わせてディメンションを設定する必要があります。

とにかく、空間データと一緒にフルテキストクエリを作成する必要がある場合はsolrが役に立ちます。そうでない場合、mongodbは空間クエリをそのまま使用でき、より簡単なシステムにすることができます。

+0

まあ、メモリ内のキーのタイムアウトを設定するには、RedisのExpire機能が必要です。現在、MongoDBにはまだこの機能はありませんが、まだ開発中ですが、MongoDBでこれを行うための処理があります。現在、MongoDBを使用してサービスのプロトタイプを構築しています。 –

関連する問題