तुम कर सकते हो। टुकड़ों को मैन्युअल रूप से पूर्व-विभाजित करना संभव है, इसका वर्णन यहां किया गया है:http://www। mongodb.org/display/DOCS/Splitting+Chunks
ध्यान से सोचें कि आप अपने टुकड़ों को कैसे विभाजित करते हैं। यदि आप इसे बुरी तरह से करते हैं तो आपको कई प्रदर्शन समस्याएं हो सकती हैं, लेकिन यदि आप अपनी चाबियों के बारे में पर्याप्त जानते हैं तो आप बहुत कुछ हासिल कर सकते हैं।
अगर आप ऐसा करते हैं तो आप शायद बैलेंसर को बंद करना चाहते हैं:
> use config
> db.settings.update({_id: "balancer"}, {$set: {stopped: true}}, true);
(यह यहां बताया गया है:http://www.mongodb.org/display/DOCS /शेयरिंग+प्रशासन )
यह एक उदाहरण है कि आप इसे कैसे कर सकते हैं। आप जो करना चाहते हैं उसके आधार पर आपको इसे संशोधित करना होगा (मुझे लगता है कि आपकी शार्ड कुंजी का नाम x
नहीं है , उदाहरण के लिए, और आपकी सीमा -1000 से 2000 तक नहीं है)।
> use admin
> db.runCommand({split: "my_db.my_coll", middle: {x: 0}})
> db.runCommand({split: "my_db.my_coll", middle: {x: 1000}})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: -1}, to: "shard_1_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 0}, to: "shard_2_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 1000}, to: "shard_3_name"})
split
आदेश विखंडू बनाते हैं। प्रत्येक कमांड मध्य मान वाले चंक को दो भागों में विभाजित करता है, इसलिए पहले खंड को विभाजित करता है जिसमें min_value -> max_value
होता है min_value -> 0
. में और 0 -> max_value
. फिर दूसरा कमांड 1000 वाले चंक को विभाजित करता है, पिछले कमांड द्वारा बनाए गए दूसरे चंक को दो नए चंक्स में विभाजित करता है। उस आदेश के बाद आपके पास तीन भाग होते हैं:
min_value -> 0
0 -> 1000
1000 -> max_value
निम्नलिखित तीन कमांड इन चंक्स को अलग-अलग शार्क में ले जाते हैं। डॉक्स का कहना है कि कमांड find
. में मान वाले चंक को स्थानांतरित करेगा , इसलिए मैंने तीन मूल्यों को चुना जो मुझे पता है कि अलग-अलग हिस्सों में हैं और इनका उपयोग किया है (बीएसओएन में min_key
के लिए एक प्रतीक है और max_key
, लेकिन मुझे यकीन नहीं है कि इस संदर्भ में इसका सही तरीके से उपयोग कैसे किया जाए)।
इस पेज को भी पढ़ें http://www.mongodb.org/display/DOCS/Moving +चंक्स