प्रतिलिपि शेर्डिंग की तुलना में बहुत आसान प्रतीत होता है, जब तक कि मैं वास्तव में प्राप्त करने की कोशिश कर रहा हूं कि क्या लाभ का लाभ नहीं है। क्या वे दोनों क्षैतिज स्केलिंग प्रदान नहीं करते हैं?मोंगो में शेर्डिंग और प्रतिकृति के बीच क्या अंतर है?
उत्तर
स्केलिंग MongoDB के संदर्भ में:
replication डेटा की अतिरिक्त प्रतियां बनाता है और एक अन्य नोड के लिए स्वत: विफलता के लिए अनुमति देता है। यदि आप डेटा को पढ़ने के लिए ठीक हैं तो संभावित रूप से नवीनतम नहीं है, तो प्रतिकृति क्षैतिज स्केलिंग के साथ पढ़ने में मदद कर सकती है।
sharding एक ठीकरा कुंजी का उपयोग कर कई सर्वरों भर में डेटा विभाजन से लिखते हैं डेटा की क्षैतिज स्केलिंग के लिए अनुमति देता है। choose a good shard key के लिए यह महत्वपूर्ण है। उदाहरण के लिए, शार्ड कुंजी की खराब पसंद से डेटा के "हॉट स्पॉट" हो सकते हैं जो केवल एक ही शेड पर लिखा जा रहा है।
एक sharded पर्यावरण more complexity जोड़ता है क्योंकि MongoDB अब टुकड़ों के बीच डाटा और अनुरोधों के वितरण का प्रबंधन करने के है - अतिरिक्त विन्यास और रूटिंग प्रक्रियाओं उन पहलुओं का प्रबंधन करने के लिए जोड़ रहे हैं।
प्रतिकृति और शेर्डिंग आमतौर पर sharded cluster बनाने के लिए संयुक्त होते हैं जहां प्रत्येक शार्ड को प्रतिकृति सेट द्वारा समर्थित किया जाता है।
देखने के एक क्लाइंट अनुप्रयोग बिंदु से आप भी प्रतिकृति/sharding बातचीत के संबंध में कुछ नियंत्रण, विशेष रूप से:
प्रतिकृति एक पारंपरिक मास्टर/गुलाम सेटअप है, डेटा बैकअप सदस्यों को सिंक किया जाता है और यदि प्राथमिक विफल रहता है तो उनमें से कोई भी अपना स्थान ले सकता है। यह एक उचित सरल उपकरण है। यह मुख्य रूप से अनावश्यकता के लिए है, हालांकि आप प्रतिकृति सेट सदस्यों को जोड़कर पढ़ सकते हैं। यह थोड़ा जटिल है, लेकिन कुछ ऐप्स के लिए बहुत अच्छा काम करता है।
शेर्डिंग प्रतिकृति के शीर्ष पर आमतौर पर बैठता है। मोंगोडीबी में "शर्ड्स" सिर्फ उनके सामने "राउटर" नामक चीज़ के साथ प्रतिकृति सेट हैं। आपका आवेदन राउटर से कनेक्ट होगा, समस्याएं जारी करेगा, और यह तय करेगा कि कौन सी प्रतिकृति सेट (शार्ड) चीजों को आगे बढ़ाने के लिए है। यह एक प्रतिकृति सेट की तुलना में काफी जटिल है क्योंकि आपके पास राउटर और कॉन्फ़िगर सर्वर से निपटने के लिए सर्वर हैं (ये ट्रैक रखें कि डेटा कहां संग्रहीत किया जाता है)।
यदि आप क्षैतिज रूप से मोंगो को स्केल करना चाहते हैं, तो आप shard करेंगे। 10gen राउटर/कॉन्फ़िगर सर्वर सेटअप ऑटो-शेर्डिंग को कॉल करना पसंद करता है। शेडिंग का एक और यहूदी रूप बनाना संभव है जहां आपके पास ऐप है कि डीबी को भी लिखना है।
प्यार करता हूँ "अधिक यहूदी बस्ती फार्म" वाक्यांश की जरूरत है – scarpacci
जब भी आप सोच रहे हैं sharding या प्रतिकृति के बारे में, आपको लेखकों/अद्यतन संचालन के संदर्भ में सोचने की जरूरत है। यदि आपको लिखने की आवश्यकता नहीं है तो प्रतिकृतियां, क्योंकि यह काफी सरल है, आपके लिए एक अच्छी पसंद है।
दूसरी तरफ, यदि आप अधिकतर अपडेट/लिखते हैं तो कुछ समय पर आप एक लिखने की बाधा डाल देंगे। यदि लिखने का अनुरोध आता है तो मोंगो अन्य लिखने के अनुरोध को अवरुद्ध करता है।वे अनुरोध अनुरोध ब्लॉक तब तक लिखेंगे जब तक पहला अनुरोध नहीं किया जाएगा। यदि आप इस लेखन को स्केल करना चाहते हैं और इसे समानांतर बनाना चाहते हैं तो आपको शेर्डिंग को लागू करने की आवश्यकता है।
मान लें कि आपके हार्ड डिस्क पर एक अच्छा संगीत संग्रह है, आप अलग-अलग फ़ोल्डरों में रिलीज के वर्ष के आधार पर संगीत को तार्किक क्रम में संग्रहीत करते हैं। आप चिंतित हैं कि ड्राइव विफल होने पर आपका संग्रह खो जाएगा। तो आपको एक नई डिस्क मिलती है और कभी-कभी एक ही फ़ोल्डर संरचना को रखने वाले पूरे संग्रह की प्रतिलिपि बनाते हैं।
Sharding >>
प्रतिकृति >> भिन्न फ़ोल्डर में अपने संगीत फ़ाइलों को ध्यान में रखते हुए अन्य ड्राइव
Sharding
Sharding करने के लिए अपने संग्रह को सिंक कर रहा कई सर्वरों के बीच बंटवारे एक बड़ा संग्रह अप की एक तकनीक है। जब हम shard, हम एकाधिक mongod
सर्वर तैनात करते हैं। और सामने, mongos
जो राउटर है। आवेदन इस राउटर से बात करता है। यह राउटर फिर विभिन्न सर्वरों से बात करता है, mongod
एस। एप्लिकेशन और mongos
आमतौर पर एक ही सर्वर पर सह-स्थित होते हैं। हमारे पास एक ही मशीन पर चलने वाली कई mongos
सेवाएं हो सकती हैं। प्रत्येक सर्वर पर एक mongod
के बजाय, एकाधिक mongod
एस (जिसे प्रतिकृति सेट कहा जाता है) सेट करने की भी अनुशंसा की जाती है। एक प्रतिकृति सेट डेटा को कई अलग-अलग उदाहरणों में सिंक में रखता है ताकि यदि उनमें से कोई नीचे चला जाए, तो हम कोई भी डेटा खो देंगे नहीं। तार्किक रूप से, प्रत्येक प्रतिकृति सेट shard के रूप में देखा जा सकता है। यह एप्लिकेशन के लिए पारदर्शी है, जिस तरह से MongoDB
शेड करने का विकल्प चुनता है, हम shard key चुनते हैं।
मान लें, student
संग्रह के लिए हम stdt_id
ठीकरा कुंजी के रूप में है या यह एक यौगिक कुंजी हो सकता है। और mongos
सर्वर, यह एक श्रेणी आधारित प्रणाली है। तो stdt_id
पर आधारित है जिसे हम शार्ड कुंजी के रूप में भेजते हैं, यह अनुरोध mongod
उदाहरण के लिए अनुरोध भेज देगा।
तो, हमें वास्तव में डेवलपर के रूप में क्या जानने की आवश्यकता है?
insert
एक ठीकरा कुंजी को शामिल करना चाहिए, इसलिए यदि यह एक बहु जुदा ठीकरा कुंजी है, हम पूरी ठीकरा कुंजी- हम समझने के लिए ठीकरा कुंजी ही संग्रह
- पर है है को शामिल करना चाहिए
update
,remove
,find
- यदिmongos
को शर्ड कुंजी नहीं दी गई है - तो संग्रह को कवर करने वाले सभी अलग-अलग shards को अनुरोध प्रसारित करना होगा। - एक
update
के लिए - अगर हम पूरे ठीकरा कुंजी निर्दिष्ट नहीं करते हैं, हम इसे एक बहु अद्यतन बनाने के लिए इतना है कि यह जानता है कि यह प्रसारित करने के लिए यह
- 1. मोंगो शेर्डिंग
- 2. मोंगोड - "मोंगो" और "मोंगोड" डेटाबेस चलाने के बीच अंतर
- 3. # {} $ {} और% {} के बीच क्या अंतर है?
- 4. के बीच क्या अंतर है:। और: आर !?
- 5. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 6. शेर्डिंग और इंडेक्स
- 7. $ और $$ के बीच क्या अंतर है?
- 8. भिन्नता और '-' के बीच क्या अंतर है?
- 9. "$^एन" और "$ +" के बीच क्या अंतर है?
- 10. Redis प्रतिकृति और redis sharding (क्लस्टर) अंतर
- 11. के बीच क्या अंतर है?
- 12. MATLAB में & &&& के बीच क्या अंतर है?
- 13. अंतर और कहां के बीच क्या अंतर है?
- 14. _id और $ oid के बीच अंतर; मोंगो डेटाबेस में $ दिनांक और IsoDate
- 15. मोंगो डीबी मुद्दों पर चल रही प्रतिकृति
- 16. WinAPI में हैंडल और एचएफआईएलई के बीच क्या अंतर है?
- 17. सिम्फनी में रीडायरेक्ट और आगे के बीच क्या अंतर है?
- 18. PHP में iconv() और mb_convert_encoding() के बीच क्या अंतर है?
- 19. वेरिलोग में $ स्टॉप और $ फिनिश के बीच क्या अंतर है?
- 20. ember.js में, मिश्रण और विस्तार के बीच क्या अंतर है?
- 21. पर्ल में 'eq' और '= ~' के बीच क्या अंतर है?
- 22. गेब में, प्रदर्शित और वर्तमान के बीच क्या अंतर है?
- 23. गिट में लेखक और कमिटर के बीच क्या अंतर है?
- 24. आर में, अनलिंक और file.remove के बीच क्या अंतर है?
- 25. रेगेक्स में() और [] के बीच क्या अंतर है?
- 26. लिस्प में 'और #' के बीच क्या अंतर है?
- 27. इनलाइन और # परिभाषा के बीच अभ्यास में क्या अंतर है?
- 28. .NET में KeyValuePair और हैशटेबल के बीच क्या अंतर है?
- 29. Mercurial में, 'सिर' और 'शाखा' के बीच क्या अंतर है?
- 30. आरएसपीईसी में stub_model और mock_model के बीच क्या अंतर है?
"मोंगोडब में प्रत्येक शार्ड एक प्रतिकृति सेट है" - यह सच नहीं है। आप अलग-अलग सर्वर को शर्ड्स के रूप में जोड़ सकते हैं। –
@ सर्वियो टुएंटेसेव: धन्यवाद, स्पष्ट "है" जैसा "हो सकता है"। आदर्श रूप से आपका शर्ड * एक प्रतिलिपि सेट होना चाहिए ताकि कुछ रिडंडेंसी/फेलओवर हो। इसी तरह, एक प्रतिकृति सेट * एकाधिक सर्वरों पर * चलाना चाहिए (लेकिन तकनीकी रूप से, यह नहीं है)। – Stennie
मैं "प्रतिकृति पर बनाता है" खंड को हटाने का सुझाव देता हूं। यह इस पर निर्माण नहीं करता है। दो चीजें पूरी तरह से ऑर्थोगोनल हैं। :) –