paint-brush
अपाचे कैसेंड्रा एफएक्यू का जवाब देनाद्वारा@datastax
1,095 रीडिंग
1,095 रीडिंग

अपाचे कैसेंड्रा एफएक्यू का जवाब देना

द्वारा DataStax5m2023/02/25
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

चूंकि इसे 2007 में विकसित किया गया था, Apache Cassandra ने दुनिया के कुछ सबसे बड़े उद्यमों द्वारा उपयोग किए जाने वाले रॉक-सॉलिड, अत्यधिक स्केलेबल, विश्वसनीय NoSQL डेटा स्टोर के रूप में प्रतिष्ठा बनाई है। लेकिन कैसेंड्रा के साथ काम करने के लिए एक निश्चित स्तर का अनुभव और विशेषज्ञता भी चाहिए। तो यह समझ में आता है कि इस ओपन सोर्स डेटाबेस के बारे में सीखते समय बहुत सारे सवाल उठते हैं। इस लेख में कुछ शीर्ष प्रश्न शामिल हैं जो डेवलपर्स विभिन्न सामुदायिक मंचों पर पूछते हैं।
featured image - अपाचे कैसेंड्रा एफएक्यू का जवाब देना
DataStax HackerNoon profile picture

चूंकि इसे 2007 में विकसित किया गया था, Apache Cassandra ने दुनिया के कुछ सबसे बड़े उद्यमों द्वारा उपयोग किए जाने वाले रॉक-सॉलिड, अत्यधिक स्केलेबल, विश्वसनीय NoSQL डेटा स्टोर के रूप में प्रतिष्ठा बनाई है। लेकिन कैसेंड्रा के साथ काम करने के लिए एक निश्चित स्तर का अनुभव और विशेषज्ञता भी चाहिए। तो यह समझ में आता है कि इस ओपन सोर्स डेटाबेस के बारे में सीखते समय बहुत सारे सवाल उठते हैं।


इस लेख में कुछ शीर्ष प्रश्न शामिल हैं जो डेवलपर विभिन्न सामुदायिक मंचों पर पूछते हैं।

कैसेंड्रा में विभाजन, क्लस्टरिंग और समग्र कुंजी के बीच क्या अंतर है?

वाइड-कॉलम डेटाबेस में प्राथमिक कुंजी रिलेशनल प्राथमिक कुंजी से कैसे अलग है, यह समझना कैसेंड्रा की शक्ति को सीखने में एक महत्वपूर्ण कदम है।


कैसंड्रा जैसे वाइड-कॉलम स्टोर कॉलम परिवारों की धारणा का उपयोग करते हैं, एक डेटाबेस ऑब्जेक्ट जिसमें संबंधित डेटा के कई कॉलम होते हैं जो एक साथ उपयोग किए जाते हैं, पारंपरिक रिलेशनल डेटाबेस टेबल के समान। किसी दिए गए कॉलम परिवार के भीतर, सभी डेटा को पंक्ति-दर-पंक्ति फैशन में संग्रहीत किया जाता है, जैसे कि किसी दिए गए पंक्ति के कॉलम अलग-अलग संग्रहीत किए जाने के बजाय एक साथ संग्रहीत होते हैं।


दूसरा तरीका रखो, एक स्तंभ परिवार एक कुंजी-मूल्य जोड़ी है, जहां कुंजी को उस मान पर मैप किया जाता है जो स्तंभों का एक सेट है। संबंधपरक डेटाबेस के साथ सादृश्य बनाने के लिए, एक स्तंभ परिवार एक "तालिका" की तरह है, जिसमें प्रत्येक कुंजी-मूल्य जोड़ी एक "पंक्ति" है। डेवलपर्स के लिए, वाइड-कॉलम टेबल खुद को एक पंक्ति-और-कॉलम तालिका के रूप में प्रस्तुत कर सकते हैं जो कोड में या एपीआई के माध्यम से परिचित और काम करने में आसान है।

आइए अवधारणाओं को जीवन में लाने में मदद के लिए कुछ उदाहरण कोड देखें।

उपरोक्त कोड में, हमारे पास एक कीस्पेस है, कुछ फ़ील्ड जैसे "शहर," "अंतिम नाम" और "प्रथम नाम"। प्राथमिक कुंजी तल पर है। कैसेंड्रा में सभी तालिकाओं में, कम से कम एक विभाजन कुंजी शामिल होनी चाहिए। ऊपर की छवि द्वारा हाइलाइट किए गए उदाहरण में, हम "शहर" द्वारा विभाजन करेंगे।


इसके बाद जो कुछ भी आता है वह क्लस्टर कॉलम है। "शहर" के आसपास कोष्ठकों पर ध्यान दें - यह इंगित करता है कि यह विभाजन कुंजी है। विभाजन कुंजी क्या है, यह इंगित करने के लिए हम कोष्ठक का उपयोग करते हैं, यदि आपकी विभाजन कुंजी समग्र है और इसमें एक से अधिक कॉलम हैं। फिर यह स्पष्ट है कि कौन से कॉलम प्राथमिक कुंजी के लिए हैं और कौन से कॉलम क्लस्टरिंग हैं।

प्राथमिक कुंजी का मुख्य उद्देश्य यह सुनिश्चित करना है कि पंक्ति अद्वितीय है। इसमें शून्य या अधिक क्लस्टरिंग कॉलम भी हो सकते हैं, जो सॉर्टिंग को नियंत्रित कर सकते हैं। लेकिन प्राथमिक कुंजी "समग्र" या "यौगिक" भी हो सकती है, जिसका अर्थ है कि इसमें दो या अधिक कॉलम हैं।

विभाजन कुंजी का उपयोग हमारी पंक्तियों को विभाजित करने के लिए किया जाता है और इसमें एक या अधिक कॉलम होते हैं।

Cassandra कैसे मैं चाहता हूँ डेटा युक्त नोड ढूँढता है?

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


क्लाइंट अनुरोध किसी भी नोड को भेजे जा सकते हैं — और सबसे पहले वे उन नोड्स को भेजे जाते हैं जिनके बारे में आपका ड्राइवर जानता है। लेकिन एक बार ड्राइवर सॉफ़्टवेयर आपके क्लस्टर की टोपोलॉजी को जोड़ता है और समझता है, तो यह एक करीबी समन्वयक में बदल सकता है। स्केलेबिलिटी के लिए कंप्यूट और स्टोरेज को कैसे अलग किया जा सकता है, यह जानने के लिए ओपन सोर्स इकोसिस्टम प्रोजेक्ट स्टारगेट देखें।


गपशप प्रोटोकॉल का उपयोग करके एक दूसरे के साथ एक खुले स्रोत कैसेंड्रा क्लस्टर एक्सचेंज टोपोलॉजी जानकारी में नोड्स। गॉसिपर हर सेकंड चलता है और यह सुनिश्चित करता है कि आपके द्वारा कॉन्फ़िगर किए गए किसी भी स्निच से डेटा के साथ सभी नोड्स को चालू रखा जाए। स्निच इस बात पर नज़र रखता है कि प्रत्येक नोड किस डेटा केंद्र और रैक से संबंधित है। इस तरह, समन्वयक नोड के पास डेटा भी होता है जिसके बारे में प्रत्येक टोकन रेंज के लिए कौन से नोड जिम्मेदार होते हैं।


आप कमांड लाइन से एक नोड टूल "रिंग" चलाकर इस जानकारी को देख सकते हैं, हालाँकि यदि आप वर्चुअल नोड्स या "vnodes" का उपयोग कर रहे हैं, तो यह सभी 256 वर्चुअल नोड्स (डिफ़ॉल्ट रूप से) पर डेटा के रूप में पता लगाने के लिए थोड़ा मुश्किल होगा अमाउंट) स्क्रीन के पास बहुत जल्दी फ्लैश होगा।


K8ssandra.io पर, यह व्यवहार अधिक Kubernetes-native है, और क्लस्टर मेटाडेटा, साथ ही सुरक्षित स्कीमा अपडेट को प्रचारित करने के लिए गॉसिप प्रोटोकॉल के बजाय Etcd का उपयोग किया जाता है।

कैसंड्रा में सेकेंडरी इंडेक्स कैसे काम करते हैं?

अनुक्रमण बहुत सूक्ष्म है। यह डेटाबेस इंटर्नल्स को समझने में मदद करता है। कैसेंड्रा में यह क्वेरी आंतरिक रूप से कैसे काम करेगी? इस उदाहरण कोड पर एक नज़र डालें:

कैसेंड्रा में यह क्वेरी आंतरिक रूप से कैसे काम करेगी?


अनिवार्य रूप से विभाजन के लिए 35 के बराबर स्कोप आईडी और 78005 के बराबर फॉर्म आईडी के साथ सभी डेटा लौटाए जाएंगे, और फिर इसे रिकॉर्ड लिंक आईडी इंडेक्स द्वारा फ़िल्टर किया जाएगा। यह 9897 के लिए रिकॉर्ड इंडेक्स आईडी प्रविष्टि को देखेगा या उन प्रविष्टियों से मिलान करने का प्रयास करेगा जो पंक्तियों से मेल खाते हैं जहां स्कोप आईडी 35 के बराबर है और फॉर्म आईडी 78005 के बराबर है। विभाजन कुंजियों और अनुक्रमणिका कुंजियों के लिए पंक्तियों का प्रतिच्छेदन लौटाया जाएगा .


आप उचित रूप से पूछ सकते हैं कि रिकॉर्ड लिंक आईडी इंडेक्स जैसे उच्च-कार्डिनैलिटी कॉलम उसके लिए क्वेरी प्रदर्शन को प्रभावित करेगा या नहीं। मुख्य तालिका में लगभग प्रत्येक प्रविष्टि के लिए उच्च-कार्डिनैलिटी इंडेक्स अनिवार्य रूप से एक पंक्ति बनाते हैं। प्रदर्शन प्रभावित हो सकता है क्योंकि कैसंड्रा को क्वेरी परिणामों के लिए अनुक्रमिक पढ़ने के लिए डिज़ाइन किया गया है। एक इंडेक्स क्वेरी अनिवार्य रूप से कैसंड्रा को रैंडम रीड्स करने के लिए मजबूर करती है क्योंकि आपके इंडेक्स की कार्डिनैलिटी बढ़ जाती है, इसलिए क्वेरी वैल्यू को खोजने में लगने वाला समय भी बढ़ जाता है।


तो, क्या कैसंड्रा उपरोक्त क्वेरी के लिए सभी नोड्स को स्पर्श करेगा? नहीं, इसे केवल उस नोड को स्पर्श करना चाहिए जो उस स्कोप आईडी के लिए ज़िम्मेदार है जो 35 के बराबर है और वह फॉर्म आईडी 78005 विभाजन के बराबर है। इंडेक्स, इसी तरह, स्थानीय रूप से संग्रहीत होते हैं और केवल स्थानीय नोड के लिए मान्य प्रविष्टियां होती हैं।

कैसंड्रा और डेटास्टैक्स एस्ट्रा डीबी के बीच क्या अंतर है?

Cassandra एक खुला स्रोत NoSQL डेटाबेस है जो उन वितरित अनुप्रयोगों को शक्ति प्रदान करता है जिनका आप शायद हर दिन बड़े पैमाने पर उपयोग कर रहे हैं। हालाँकि, यह आपके और आपकी टीम पर निर्भर है कि आप स्व-प्रबंधन करें।


दूसरी ओर, एस्ट्रा डीबी एक सर्वर रहित डेटाबेस-ए-ए-सर्विस है। यह कैसेंड्रा पर निर्मित पूरी तरह से प्रबंधित, ऑटोस्केलिंग क्लाउड सेवा है और आपकी पसंद के सार्वजनिक क्लाउड प्रदाता पर चलती है।

ओपन सोर्स डेटा एपीआई गेटवे स्टारगेट के अतिरिक्त, कैसंड्रा और एस्ट्रा डीबी दोनों दस्तावेज़, स्तंभ, और की-वैल्यू नोएसक्यूएल वर्कलोड की सेवा करते हैं। और एस्ट्रा डीबी के साथ, स्टारगेट स्वचालित रूप से आपके लिए स्थापित हो जाता है।


कैसेंड्रा के बारे में अधिक जानना चाहते हैं? कैसेंड्रा फॉरवर्ड में हमसे जुड़ें, 14 मार्च को एक मुफ्त डिजिटल कार्यक्रम!


यहाँ भी प्रकाशित हुआ।