2009-05-11 22 views
5

को संभाल सकता है मुझे एक MySQL डेटाबेस प्रदान करने के लिए समाधान देखना है जो टेराबाइट रेंज में डेटा वॉल्यूम को संभाल सकता है और अत्यधिक उपलब्ध (पांच नाइन) हो सकता है। प्रत्येक डेटाबेस पंक्ति में टाइमस्टैम्प और 30 फ्लोट मान होने की संभावना है। अपेक्षित वर्कलोड 2500 आवेषण/सेकंड तक है। क्वेरीज़ कम बार-बार होने की संभावना है लेकिन शायद बड़ी हो सकती है (शायद 100 जीबी डेटा शामिल हो) हालांकि शायद केवल एक टेबल शामिल है।क्या MySQL क्लस्टर एक टेराबाइट डेटाबेस

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

क्या किसी को इस पैमाने के डेटाबेस पर MySQL क्लस्टर का उपयोग करने का अनुभव है? क्या यह भी व्यवहार्य है? डिस्क आधारित स्टोरेज प्रदर्शन को कैसे प्रभावित करता है?

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

एकमात्र शर्त यह है कि यह एक MySQL आधारित समाधान होना चाहिए। मुझे नहीं लगता कि MySQL डेटा के लिए जाने का सबसे अच्छा तरीका है जिसके साथ हम काम कर रहे हैं लेकिन यह एक कठिन आवश्यकता है।

+2

यदि आप तकनीकों के लिए खरीदारी कर रहे हैं, तो आप Google की बिगटेबल के आधार पर कुछ परियोजनाओं पर विचार कर सकते हैं। हडोप से एचबीएस, और हाइपरटेबल देखने के लिए दिलचस्प परियोजनाएं हैं। http://hadoop.apache.org/hbase/ और http://www.hypertable.org/ – Kekoa

+0

सर्वरफॉल्ट.com पर यह प्रश्न बेहतर पूछा जा सकता है। – lothar

उत्तर

2

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

मुझे बेहतर उत्तर देने में खुशी होगी, लेकिन उच्च-अंत डेटाबेस कार्य बहुत ही कार्य-निर्भर है। डेटा के साथ आगे की सहायता के लिए क्या हो रहा है, इसके बारे में मुझे और जानना होगा।

+0

डेटाबेस टाइमस्टैम्प किए गए डेटा की एक स्ट्रीम संग्रहीत करेगा जिसे हम कई स्थानों के लिए 50 हर्ट्ज पर प्राप्त करते हैं, इसलिए 2500 आवेषण/सेकंड। धारा की कॉन्फ़िगरेशन किसी भी समय बदल सकती है इसलिए फ़्लोट मानों की एक चर संख्या हो सकती है। टाइमस्टैम्प प्राथमिक कुंजी होगी और एक अनुक्रमणिका होगी। हम मानते हैं कि टाइमस्टैम्प कॉलम डिस्क पर शेष डेटा के साथ स्मृति में होगा। – Mark

+0

मैं बैच डालें, फिर। एकाधिक पंक्तियों के लिए एक सम्मिलित/ग्राहक/दूसरा। सरल मास्टर-मास्टर प्रतिकृति आपको विफलता की अनुमति देगी और आसानी से 50 डालने/दूसरे लोड को पूरा करेगी। एकमात्र असली सवाल यह है कि नमूना खोने से बचना कितना महत्वपूर्ण है, और मुझे लगता है कि आप सर्वर क्रैश के लिए 2 या 3 सेकंड खोए गए डेटा से निपट सकते हैं। एक अतिरिक्त संकेत के रूप में, यदि आपकी प्राथमिक कुंजी के अलावा कोई अनुक्रमणिका है तो आपकी तालिका को विभाजित करना उपयोगी हो सकता है। उन बड़े प्रश्नों को तेज करने के लिए डेटा वेयरहाउसिंग ट्रिक्स भी हो सकते हैं। –

+0

टिप्पणियों के लिए धन्यवाद। हमने सोचा था कि बैच आवेषण जाने का रास्ता होगा। मैंने ndb_size.pl स्क्रिप्ट का उपयोग करके कुछ गणना की और आप इंडेक्स के आकार के बारे में सही थे। आवश्यक स्मृति क्लस्टर व्यवहार्य का उपयोग नहीं करता है। हालांकि, हमने आज भी सीखा है कि कुछ डेटा हानि ठीक है, जैसा कि आपने कहा था, अब हम सरल प्रतिकृति का उपयोग कर रहे हैं। – Mark

2

ठीक है, मैं mySQL के बारे में एक कठिन आवश्यकता होने के बारे में हिस्सा पढ़ता हूं।

तो इसके साथ, मुझे पहले यह बताएं कि आप जिस वर्कलोड के बारे में बात कर रहे हैं - 2500 आवेषण/सेक, दुर्लभ प्रश्न, पूरे डेटा सेट के 10 प्रतिशत तक परिणाम सेट होने की संभावना है - किसी भी संबंधपरक डेटा बेस सिस्टम के लिए बस निराशाजनक है।

(यह मुझे एक परियोजना की याद दिलाता है, बहुत पहले, जहां मुझे 300 सेकंड से भी कम समय में 9600 बॉड आरएस -422 लाइन (एक कठिन आवश्यकता) पर 100 मेगाबाइट प्रोग्राम डेटा लोड करने की हार्ड आवश्यकता थी (भी एक कठिन आवश्यकता।) तथ्य यह है कि 1KByte/सेकंड × 300 सेकंड = 300kbytes संवाद करने के लिए नहीं मालूम था।)

तो फिर वहाँ के बारे में हिस्सा है "शामिल अप करने के लिए 30 तैरता है।" वाक्यांश कम से कम सुझाव देता है कि प्रति सम्मिलित नमूने की संख्या परिवर्तनीय है, जो कुछ सामान्यीकरण मुद्दों को बदलने में सुझाव देती है - या फिर प्रत्येक पंक्ति 30 प्रविष्टियों को व्यापक बनाने और एनयूएलएल का उपयोग करने की आवश्यकता है।

लेकिन सभी ने कहा कि, ठीक है, आप लगभग 300 किलोबाइट/सेकंड और 2500 टीपीएस के बारे में बात कर रहे हैं (यह मानते हुए कि यह वास्तव में असंबंधित नमूने का अनुक्रम है)। यह set of benchmarks, कम से कम, सुझाव देता है कि यह संभावना के दायरे से बाहर नहीं है।

+0

टिप्पणियों के लिए धन्यवाद और मुझे एक नया शब्द सिखाने के लिए धन्यवाद! (pessimal) नमूनों की परिवर्तनीय संख्या को संभालने के लिए हम प्रत्येक बार यह परिवर्तन करते समय एक नई तालिका बनाने की सोच रहे हैं क्योंकि यह अक्सर नहीं होना चाहिए। उसके बाद हमारे पास एक लुकअप टेबल होगी जो आपको समय अवधि के लिए उचित डेटा तालिका खोजने की अनुमति देगी। – Mark

2

This article एक बड़े MySQL डेटाबेस को धीमा कर सकता है यह पहचानने में वास्तव में सहायक है।

2

संभवतः हाइबरनेट शॉर्ट्स को आज़माएं और 10/2 टेडबाइट के साथ 10 नोड्स पर MySQL चलाएं ताकि आप 5 टेराबाइट्स को संभाल सकें;) आपकी सीमा से अच्छी तरह से मुझे लगता है?

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