आम तौर पर डेटाबेस सर्वर सबसे बड़ा, सबसे महंगी बॉक्स है जिसे हमें लंबवत रूप से स्केलिंग के रूप में खरीदना है, केवल एकमात्र विकल्प है। क्या ऐसे कोई डेटाबेस हैं जो क्षैतिज रूप से स्केल करते हैं (यानी कई कमोडिटी मशीनों में) और इस दृष्टिकोण में सीमाएं क्या हैं?क्या आप क्षैतिज रूप से स्केल करने वाले डेटाबेस की अनुशंसा कर सकते हैं?
उत्तर
चिंता न करें, अच्छे समाधान आ रहे हैं!
Couchdb और Hypertable ओपन सोर्स और अभी भी अल्फा में हैं, लेकिन वे स्पष्ट रूप से कमोडिटी सॉफ़्टवेयर पर स्केलिंग करने के लिए डिज़ाइन किए गए हैं। वे बहुत अच्छी तरह से काम करते हैं, और डेटाबेस के बारे में आप कैसे सोच सकते हैं बदल सकते हैं।
इसके अलावा, अगर किसी और को आपके लिए वितरण करने देना ठीक है, तो Google AppEngine और Amazon SimpleDB बेहद सस्ते वितरित डेटाबेस सेवाएं हैं, हालांकि वे अभी बीटा में हैं इसलिए सख्त सीमाएं लागू की गई हैं।
जावास्पेस (या वाणिज्यिक कार्यान्वयन जैसे कि गिगास्पेस) जैसी स्टोरेज तकनीकें हैं जो अत्यधिक स्केलेबल, तेज़ & ऑब्जेक्ट्स तक सुरक्षित पहुंच प्रदान करती हैं।
मेमकैड जैसे वितरित कैशिंग सिस्टम भी हैं, जो एक समान दृष्टिकोण प्रदान करते हैं।
बेशक, इनमें से कोई भी वास्तविक डेटाबेस नहीं हैं, लेकिन वे ऐसी चीजें हैं जो डेटाबेस के संयोजन के साथ काम कर सकती हैं ताकि एक उपयुक्त आर्किटेक्चर के बाद क्षैतिज स्केलेबिलिटी की बड़ी मात्रा प्रदान की जा सके। वास्तविक समस्या यह है कि यदि आप डेटाबेस के साथ आने वाली सभी एसीआईडी भलाई चाहते हैं, तो कुछ अपरिहार्य प्रदर्शन दंड हैं। एकमात्र तरीका उन बिट्स को समझना है जहां आपको एसीआईडी की आवश्यकता नहीं है, और उन बिट्स की सेवा के लिए अन्य तकनीकों का उपयोग करें।
Netezza और अन्य डाटावायरहाउस उपकरण इस तरह से स्केल करते हैं, लेकिन वे OLTP और वेब ऐप वर्कलोड के लिए अच्छे नहीं हैं।
एकाधिक मशीनों में स्केलिंग के लिए ओरेकल मार्ग को रियल एप्लिकेशन क्लस्टर (ओरेकल आरएसी) कहा जाता है। इस जगह पर दस्तावेज़ीकरण का कोई अंत नहीं है; आप http://www.oracle.com/database/rac_home.html से शुरू करने का प्रयास कर सकते हैं।
Oracle RAC - असली अनुप्रयोग क्लस्टर
यह अच्छी तरह से काम करता है, तो आप बस अपने क्लस्टर के लिए बॉक्स में जोड़ें। आप एक बॉक्स से दूसरे बॉक्स में असफल हो सकते हैं। यह प्रतिकृति नहीं है, सभी बक्से एक ही तार्किक इकाई का हिस्सा हैं।
यह निश्चित रूप से काफी खर्चशील है।
ओरेकल आरएसी डेटाबेस के रोल्स रॉयस है जो अतिरिक्त हार्डवेयर नोड्स को अपेक्षाकृत आसानी से और हार्डवेयर विफलता जोड़ने की इजाजत देता है।
हालांकि, आपकी कमोडिटी हार्डवेयर लागत लाइसेंस लागत से बौना हो जाएगी।
आपको ऐसा लगता है कि आपको क्षैतिज स्केलिंग की आवश्यकता क्यों है। 40 जीबी रैम और SAN स्टोरेज वाला एक बहु सीपीयू कोर सर्वर बहुत ही बड़े डीबी इंस्टॉलेशन का समर्थन कर सकता है।
क्या आप अपनी समस्या की बेहतर समझने के लिए कोई आकार और अपेक्षित गतिविधि जानकारी प्रदान कर सकते हैं?
ओरेकल रियल एप्लिकेशन क्लस्टर। यदि आप सबसे अच्छा चाहते हैं तो इसे देखें।
यदि आप गंभीरता से सोचते हैं कि आप एक सभ्य मल्टीकोर "बिग आयरन" बॉक्स को स्केल करेंगे, तो आप अपने डेटा को विभाजित करने के बारे में सोचेंगे। यह स्केल करने के लिए एक अच्छा, डेटाबेस अज्ञेयवादी तरीका है।
सभी डेटाबेस क्षैतिज रूप से गंभीर लागत पर आएंगे।
जब तक आपके पास समस्या पर फेंकने के लिए मेगा $$ नहीं है, तो आरएसी के बारे में भूल जाओ। जबकि यह बहुत अच्छा है, एक बार जब आप 2 नोड्स से अधिक पैमाने पर जाते हैं तो यह बहुत महंगा होता है।
यदि आप आरएसी मार्ग पर जाते हैं तो यह याद रखने योग्य है कि यह क्षैतिज रूप से हमेशा स्केल नहीं करता है। यहां तक कि बिक्री के लोग भी मानते हैं कि 9 0% आरएसी ग्राहक 4 नोड्स या उससे कम हैं। एक बार जब आप उससे अधिक जाते हैं तो आपको कम रिटर्न मिलता है। तो आरएसी आपके लिए काम कर सकता है, लेकिन यह जवाब होने की गारंटी नहीं है।
MySQL: http://www.mysql.com/why-mysql/scaleout.html
सीमाएं है कि यह पढ़ने के ज्यादातर वर्कलोड के साथ सबसे अच्छा काम करता है। आपके पास आमतौर पर एक 'मास्टर' होता है जो सभी लिखने, और कई 'दास' प्राप्त करता है जो लिखने को दोहराते हैं। फिर आप सभी डेटाबेस पर पढ़ने को वितरित करते हैं।
MySQL प्रतिकृति असीमित है, इसलिए आपको शायद समय अंतराल की समस्याओं से निपटना होगा (आप मास्टर को लिखते हैं, और फिर लिखने से पहले दास से पढ़ते हैं)।
ओरेकल आरएसी क्षैतिज रूप से मापनीय नहीं है, क्योंकि सभी ओरेकल उदाहरण समान डाटा स्टोरेज साझा करते हैं। हां, SAN सामान के साथ आप एक बड़ा आकार डीबी प्राप्त कर सकते हैं, लेकिन यह बिल्कुल स्केलेबल नहीं है। दूसरे शब्दों में, ओरेकल आरएसी अभी भी एक पैमाने पर दृष्टिकोण है। तो स्केलिंग-आउट या क्षैतिज स्केलिंग के लिए, आपको अपने डेटा को फ़ंक्शन द्वारा विभाजित करना होगा जिसका अर्थ है विभिन्न डेटाबेस में टेबल के विभिन्न समूह डालना; या प्रति तालिका अपने डेटा को विभाजित करें जिसका अर्थ है कि एक तालिका को एक ही स्कीमा के साथ एकाधिक उप-सारणी में विभाजित करना है लेकिन विभिन्न डेटाबेस में स्टोर करना है। इस तरह, आपको एक स्केलिंग-आउट समाधान मिलता है। उस पर कई संसाधन हैं। Sharding वेब 2.0 वेबसाइट आर्किटेक्चर ब्लॉग क्षेत्र में थोड़ी देर के लिए एक चर्चा शब्द रहा है। क्योंकि शेर्डिंग सीधे डेटाबेस द्वारा समर्थित नहीं है, तो आपको अपना स्वयं का समाधान बनाना होगा। लेकिन जैसा कि मैंने कहा, पहले से ही कई सबक हैं। ऑर्केकल के लिए, विभाजन तालिका संभव है। Mysql के लिए, this question
MongoDB क्षैतिज रूप से स्केल करने वाले सर्वोत्तम डेटाबेस में से एक है।
आप ओलाप के लिए डैशडीबी देख सकते हैं - आईबीएम इसे क्लाउडेंट के साथ ओएलटीपी के साथ जोड़ता है। https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_dashdb_placeholder?lang=en
- 1. SQLite डेटाबेस स्कैनरेंसी के साथ स्केल कर सकते हैं?
- 2. क्या आप वैकल्पिक वेब एप्लिकेशन स्टैक की अनुशंसा कर सकते हैं?
- 3. क्या आप .NET Winforms एप्लिकेशन के लिए कम लागत वाले स्वचालित परीक्षण टूल की अनुशंसा कर सकते हैं?
- 4. लंबवत रूप से एक व्यूबॉक्स स्केल बनाना, क्षैतिज रूप से
- 5. दृढ़ता अज्ञान स्केल कर सकते हैं?
- 6. क्षैतिज रूप से स्केल किए गए वितरित सिस्टम
- 7. क्या आप वास्तव में Django के साथ स्केल कर सकते हैं ... दिया गया है कि आप केवल एक डेटाबेस का उपयोग कर सकते हैं? (Models.py और settings.py में)
- 8. क्या आप पाइथन फ़ंक्शन प्राप्त करने वाले कीवर्ड तर्कों को सूचीबद्ध कर सकते हैं?
- 9. सी ++ में, क्या आप मैन्युअल रूप से स्ट्रीम की विफलता सेट कर सकते हैं? कैसे?
- 10. क्या आप जावास्क्रिप्ट से HTTP पैच अनुरोध कर सकते हैं?
- 11. क्या गिला स्केल ऑब्जेक्ट इंजेक्ट कर सकते हैं
- 12. क्या आप स्केल में नेस्टेड फ़ंक्शंस का परीक्षण कर सकते हैं?
- 13. क्या आप एसक्यूएल में "शाब्दिक" टेबल परिभाषित कर सकते हैं?
- 14. क्या आप अनुरोध चर से टाइमज़ोन निर्धारित कर सकते हैं?
- 15. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 16. क्या आप जावास्क्रिप्ट से सी # फ़ंक्शन कॉल कर सकते हैं?
- 17. Riak में लिंक: ग्राफ डेटाबेस की तुलना में वे क्या कर सकते हैं/नहीं कर सकते हैं?
- 18. क्या आप किसी फ़ंक्शन की अपेक्षा से अधिक पैरामीटर पास कर सकते हैं?
- 19. क्या आप एएसपी और एएसपी.नेट मिश्रण कर सकते हैं?
- 20. आप एंड्रॉइड एमुलेटर डेटाबेस की सामग्री कैसे एक्सेस कर सकते हैं?
- 21. मैं अपने divs क्षैतिज रूप से संरेखित कैसे कर सकते हैं?
- 22. क्या आप कोको बाइंडिंग मैन्युअल रूप से कार्यान्वित कर सकते हैं?
- 23. क्या आप प्रोग्रामिंग रूप से j2ee एप्लिकेशन को पुनरारंभ कर सकते हैं?
- 24. क्या आप UIControlEventAplicationReserved के साथ कस्टम ईवेंट कर सकते हैं?
- 25. क्या आप प्रोग्राम-आधारित सर्विसिंग (विश्वसनीय इंस्टॉलर) के साथ प्रोग्रामेटिक रूप से बातचीत कर सकते हैं?
- 26. आप पर्ल में किसी वस्तु को स्पष्ट रूप से कैसे नष्ट कर सकते हैं?
- 27. क्या आप एक साइगविन एप्लिकेशन को स्थिर रूप से संकलित कर सकते हैं?
- 28. विधि अधिभार। क्या आप इसका इस्तेमाल कर सकते हैं?
- 29. क्षैतिज रूप से केंद्र
- 30. क्या आप आईओएस ऐप में वैश्विक रूप से रोटेशन को अक्षम कर सकते हैं?
क्या आपने किसी भी नए एसक्यूएल विकल्पों की जांच की है? NuoDB, Clustrix, और Xeround प्रत्येक वितरित OLTP डेटाबेस हैं। मैं क्लस्टरिक्स में काम करता हूं और इसे एक शानदार उत्पाद सोचता हूं। – clieu