2009-11-29 7 views
5

निर्माण के तहत एक ऑनलाइन बाजार उत्पाद के लिए, मेरे पास एक ऐसी स्थिति है जिसके लिए डेटाबेस शेडिंग समाधान लागू करने की आवश्यकता है। मैं sharding के लिए नया हूँ और इस मंच में पदों को पढ़ने के बाद मुझे लगता है कि व्यापार संस्थाओं का उपयोग कर एक निर्देशिका आधारित sharding रणनीति उपयुक्त होगा। लेकिन मैं अभी भी इस तरह के एक शर्मीले समाधान के साथ अपनाने के लिए denormalization और डेटा सिंक्रनाइज़ेशन सर्वोत्तम प्रथाओं के बारे में स्पष्ट नहीं हूँ। 3 कोर इकाइयां, सप्लायर, ग्राहक और ऑर्डर होंगे। मैं सप्लायर आईडी के आधार पर डेटाबेस को शेड करने की योजना बना रहा हूं क्योंकि ऑर्डर डेटा पर अधिकांश प्रोसेसिंग आपूर्तिकर्ता व्यवस्थापक द्वारा की जाएगी। इससे यह सुनिश्चित होगा कि आपूर्तिकर्ता के आदेश क्रॉस डीबी fetches को समाप्त करने वाले एक डीबी उदाहरण से प्राप्त किए जाते हैं। हालांकि, इस मामले में, जब ग्राहक अपनी ऑर्डर जानकारी देखते हैं कि डेटा एकाधिक डीबी उदाहरणों में रहेंगे और बहु ​​डेटाबेस लाने की आवश्यकता होगी। आमतौर पर ऐसा किया जाता है जब ऐसे परिदृश्य एक शर्मीले समाधान में आते हैं।डेटाबेस शेडिंग रणनीति

उत्तर

11

मुझे लगता है कि 99.9% मौका है कि आपको शेरिंग की आवश्यकता नहीं है।

आप sharding की जरूरत है:

  • आपका डेटाबेस सम्मिलित/अपडेट दर के करीब है, या अधिक है, तो आप किफ़ायती ढंग सकते हैं खरीदने के उच्चतम कल्पना सर्वर की क्षमता और
  • आप पहले से ही खेती कर रहे हैं बाहर अपने पढ़ने प्रश्नों, रिपोर्टिंग, बैकअप आदि के सबसे पर केवल पढ़ने के लिए दोहराया के दास
  • आप अपने मास्टर सर्वर बंद किसी भी गैर जरूरी या असंबद्ध अद्यतन भारी वर्कलोड स्थानांतरित करने के लिए कार्यात्मक विभाजन किया है

यदि आप उपरोक्त सभी तीनों में निश्चित रूप से "हाँ" नहीं कह सकते हैं, तो आपको दाढ़ी करने की आवश्यकता नहीं है।

पढ़ें

http://www.mysqlperformanceblog.com/2009/08/06/why-you-dont-want-to-shard/

+0

धन्यवाद। मैं पूर्णतः सन्तुष्ट हुँ। हालांकि, मुझे लगता है कि मुझे दाढ़ी है, दी गई समस्या के लिए ऐसा करने की उचित रणनीति क्या है। मेरे बॉलपार्क अनुमान से पता चलता है कि डीबी ऐतिहासिक/पिछले डेटा के बिना लगभग 1 टीबी आकार में होगा। – cosmos

+0

मुझे नहीं लगता कि कोई आपको बता सकता है कि, और न ही यदि आपको विस्तृत जानकारी नहीं मिली है कि आपके आवेदन के कौन से हिस्से डेटाबेस के साथ सबसे अधिक प्रतिस्पर्धा कर रहे हैं। यदि आप शेडिंग कर रहे हैं तो संभवत: आप अधिकतर रास्ते को समाप्त कर देंगे। एक्सेस पैटर्न के आधार पर, 1Tb इतना बड़ा नहीं है, और अभी भी 1 बॉक्स पर काम कर सकता है (प्रासंगिक विफलता आदि के साथ) – MarkR

2

डाटाबेस Sharding अत्यंत प्रभावी हो सकता है, पहले भी अपने डेटाबेस आकार में एक से अधिक टीबीएस होने के लिए हो जाता है। मुख्य कारण हमने पाया है क्योंकि मेमोरी/सीपीयू से डिस्क का अनुपात स्पष्ट रूप से बदलता है, और डीएसएमएस उत्पादों जैसे कि माईएसक्यूएल सबसे हाल ही में उपयोग किए गए इंडेक्स और डेटा को स्मृति में डालने में वाकई उत्कृष्ट हैं।

आपके डेटा शेडिंग समस्या के लिए, यह तकनीक मदद कर सकती है।

  • समांतर क्वेरी (हम इसे "गो मछली" प्रश्न कहते हैं)। इस विचार के साथ आप एक ही समय में अपने शॉर्ट ऑर्डर से अपने ग्राहक ऑर्डर पूछ सकते हैं, और परिणामों को समेकित कर सकते हैं। यदि यह सही हो गया तो यह बहुत ही कुशल हो सकता है।

डेटा के लिए जो अधिकतर नहीं बदलता है हम अक्सर सामान्य लुकअप टेबल के लिए वैश्विक तालिका प्रतिकृति की अनुशंसा करते हैं, लेकिन इससे ग्राहक आदेश के रूप में सक्रिय कुछ भी मदद नहीं करेगा।

किसी भी मामले में, शेरिंग को बहुत ही प्रभावी तरीके से कार्यान्वित किया जा सकता है, और लिखने के लिए रैखिक रूप से स्केल कर सकता है, और उपरोक्त के आधार पर पढ़ने के लिए रैखिक रूप से बेहतर होता है।

1

आप भी इस तरह के MongoDB या कैसेंड्रा

तुम भी तेजी से पहुँच

आप एक से अधिक दास के साथ मास्टर गुलाम प्रतिकृति पर गौर कर सकते के लिए डाटा को कैश करने के लिए मेम्कैश उपयोग कर सकते हैं के रूप में NoSQL डीबीएस की कोशिश कर सकते हैं।

संबंधित मुद्दे