3

MongoDB 2.4.x を使用します

これは、ハッシュベースのインデックスを使用できることを意味します。

インデックスをshardKeyとして設定すると、サーバー間でほぼ均等に分散され、均等にアクセスされます。

範囲クエリを実行しようとすると、問題が発生します。

私のクエリは以下のようになります

 db.feeds.find({ age: { $gte: 20, $lte: 25}}).sort({timestamp: -1}).limit(10)

私には2つの選択肢があると思います

  1. インデックスを作成し、shardKeyを { age: 1, timestamp: -1 } に設定します

  2. shardKeyにはハッシュベースのインデックスを使用し、クエリには上記のインデックスを使用し、最近のクエリ結果をメモリ (memcached または redis) にキャッシュします。これは、範囲クエリが多くのシャード サーバーにヒットするためです。

範囲クエリを処理するための非常に効率的な戦略はどれですか? または、この問題に関する他の提案はありますか?

4

1 に答える 1