हाल ही में डॉक्स पर पोस्ट किए गए InnoDB और MySQL क्लस्टर (ndb) की एक अच्छी तुलना है... एक नज़र डालने लायक:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-compared.html
क्लस्टर आर्किटेक्चर में MySQL सर्वर का एक पूल होता है जिसे एप्लिकेशन द्वारा एक्सेस किया जाता है; ये MySQL सर्वर वास्तव में क्लस्टर डेटा संग्रहीत नहीं करते हैं, डेटा को नीचे डेटा नोड्स के पूल में विभाजित किया जाता है। प्रत्येक MySQL सर्वर के पास सभी डेटा नोड्स में डेटा तक पहुंच होती है। यदि एक MySQL सर्वर डेटा का एक टुकड़ा बदलता है तो यह तुरंत अन्य सभी MySQL सर्वरों को दिखाई देता है।
जाहिर है, यह आर्किटेक्चर डेटाबेस को स्केल करना बेहद आसान बनाता है। शार्डिंग के विपरीत, एप्लिकेशन को यह जानने की आवश्यकता नहीं है कि डेटा कहाँ रखा गया है - यह केवल सभी उपलब्ध MySQL सर्वर पर बैलेंस लोड कर सकता है। MySQL प्रतिकृति के साथ स्केलिंग के विपरीत क्लस्टर आपको लिखने के साथ-साथ पढ़ने को भी स्केल करने की अनुमति देता है। नए डेटा नोड्स या MySQL सर्वर को मौजूदा क्लस्टर में जोड़ा जा सकता है और एप्लिकेशन की सेवा में कोई हानि नहीं होगी।
MySQL क्लस्टर की साझा-कुछ नहीं वास्तुकला का अर्थ है कि यह अत्यधिक उच्च उपलब्धता (99.999%+) प्रदान कर सकता है। हर बार जब आप डेटा बदलते हैं, तो इसे दूसरे डेटा नोड में सिंक्रोनाइज़ किया जाता है; यदि एक डेटा नोड विफल हो जाता है तो एप्लिकेशन पढ़ने और लिखने के अनुरोधों को स्वचालित रूप से बैकअप डेटा नोड द्वारा नियंत्रित किया जाता है।
MySQL क्लस्टर की वितरित प्रकृति के कारण, कुछ ऑपरेशन धीमे हो सकते हैं (उदाहरण के लिए जॉइन जिनके हजारों अंतरिम परिणाम हैं - हालांकि एक प्रोटोटाइप समाधान उपलब्ध है जो इसे संबोधित करता है) लेकिन अन्य बहुत तेज़ हो सकते हैं और बहुत अच्छी तरह से स्केल कर सकते हैं (उदाहरण के लिए प्राथमिक कुंजी पढ़ता है और लिखता है)। आपके पास मेमोरी या डिस्क पर टेबल (या कॉलम) को स्टोर करने का विकल्प है और मेमोरी विकल्प (बैकग्राउंड में डिस्क पर चेकपॉइंट किए गए परिवर्तनों के साथ) को चुनकर लेनदेन बहुत हो सकते हैं जल्दी।
MySQL क्लस्टर एक एकल MySQL सर्वर की तुलना में स्थापित करने के लिए अधिक जटिल हो सकता है लेकिन यह आपको अपने एप्लिकेशन में शार्किंग को लागू करने या पढ़ने/लिखने के विभाजन को रोक सकता है। झूले और गोल चक्कर।
MySQL क्लस्टर से सर्वश्रेष्ठ प्रदर्शन और मापनीयता प्राप्त करने के लिए आपको अपने आवेदन में बदलाव करने की आवश्यकता हो सकती है (क्लस्टर प्रदर्शन ट्यूनिंग श्वेत पत्र देखें:http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php ) यदि आप एप्लिकेशन के स्वामी हैं तो यह सामान्य रूप से कोई बड़ी बात नहीं है, लेकिन यदि आप किसी अन्य व्यक्ति के एप्लिकेशन का उपयोग कर रहे हैं जिसे आप संशोधित नहीं कर सकते हैं तो यह एक समस्या हो सकती है।
एक अंतिम नोट यह है कि इसे सभी या कुछ भी नहीं होना चाहिए - आप क्लस्टर में अपनी कुछ टेबल स्टोर करना चुन सकते हैं और कुछ अन्य स्टोरेज इंजन का उपयोग कर सकते हैं, यह एक प्रति-टेबल विकल्प है। इसके अलावा आप क्लस्टर और अन्य स्टोरेज इंजनों के बीच दोहरा सकते हैं (उदाहरण के लिए, अपने रन-टाइम डेटाबेस के लिए क्लस्टर का उपयोग करें और फिर जटिल रिपोर्ट जेनरेट करने के लिए InnoDB को दोहराएं)।