4

3 つのシャードでmongodb構成され、それぞれに 3 つのレプリカがあり、これらは 3 つの物理サーバーに存在します。

各シャードで特定の日付範囲のデータを取得しようとしています。

つまり、1 つのシャードで過去 3 日間のデータ、シャード 2 で過去 6 日から 3 日間のデータ、シャード 3 で他のすべてのデータが必要です。

そのように手動でシャード キーの範囲を定義することは可能ですか?

前もって感謝します。

4

2 に答える 2

2

タグ対応シャーディングを使用できます。

http://docs.mongodb.org/manual/core/tag-aware-sharding/

これにより、シャードにタグを追加し、タグの範囲を定義できます。

于 2013-09-20T12:15:42.073 に答える
0
1.I am trying to have data for specific date ranges on each shards;

したがって、Dateshard key

2. 1 つのシャードで過去 3 日間のデータ、シャード 2 で過去 6 日から 3 日間のデータ、シャード 3 で他のすべてのデータが必要です。

この目的には、 Tag Aware Shardingが大いに役立ちます。

説明:

3 つのシャードshard1shard2shard3があると仮定します。まず、必要なシャードのシャード タグを作成します。

sh.addShardTag("shard1", "tag1")

sh.addShardTag("shard2", "tag2")

sh.addShardTag("shard3", "tag3")

ここで、tag1、 tag2 、 tag3はタグ名です。通常、タグ名はユーザー定義です。

シャード タグを削除するには:

sh.removeShardTag("shard3", "tag3")

ここで、1 つのシャードの最後にcollのdbからのデータが必要です。次に、これを試してください。(database)(collection)3 days

sh.addTagRange(db.coll,{新しい日付(2014, 11, 11)}, {新しい日付(2010, 14, 111)}, tag1)

PS : 日付フィールドでシャード キーを作成していることを確認してください。

これが役立つことを願っています。

于 2014-11-15T06:34:55.487 に答える