3 つのシャードでmongodb
構成され、それぞれに 3 つのレプリカがあり、これらは 3 つの物理サーバーに存在します。
各シャードで特定の日付範囲のデータを取得しようとしています。
つまり、1 つのシャードで過去 3 日間のデータ、シャード 2 で過去 6 日から 3 日間のデータ、シャード 3 で他のすべてのデータが必要です。
そのように手動でシャード キーの範囲を定義することは可能ですか?
前もって感謝します。
タグ対応シャーディングを使用できます。
http://docs.mongodb.org/manual/core/tag-aware-sharding/
これにより、シャードにタグを追加し、タグの範囲を定義できます。
1.I am trying to have data for specific date ranges on each shards;
したがって、Dateをshard key
2. 1 つのシャードで過去 3 日間のデータ、シャード 2 で過去 6 日から 3 日間のデータ、シャード 3 で他のすべてのデータが必要です。
この目的には、 Tag Aware Shardingが大いに役立ちます。
説明:
3 つのシャードshard1、shard2、shard3があると仮定します。まず、必要なシャードのシャード タグを作成します。
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 : 日付フィールドでシャード キーを作成していることを確認してください。
これが役立つことを願っています。