4.1 विवरण

Apache Cassandra एक वितरित डेटाबेस प्रबंधन प्रणाली है जो NoSQL सिस्टम के वर्ग से संबंधित है और इसे हैश के रूप में प्रस्तुत विशाल डेटा सरणियों के अत्यधिक स्केलेबल और विश्वसनीय स्टोरेज बनाने के लिए डिज़ाइन किया गया है।

प्रारंभ में, परियोजना को फेसबुक की गहराई में विकसित किया गया था और 2009 में अपाचे सॉफ्टवेयर फाउंडेशन के विंग के तहत स्थानांतरित कर दिया गया था, यह संगठन परियोजना को विकसित करना जारी रखता है। Cassandra पर आधारित औद्योगिक समाधान Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Huawei, Netflix, Apple, Instagram, GitHub, Twitter और Spotify जैसी कंपनियों को सेवाएं प्रदान करने के लिए तैनात किए गए हैं। 2011 तक, कैसेंड्रा के तहत एकल डेटाबेस की सेवा करने वाले सबसे बड़े सर्वर क्लस्टर में 400 से अधिक मशीनें थीं और इसमें 300 टीबी से अधिक डेटा था।

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

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

हालांकि, लोड संतुलन की गुणवत्ता को बनाए रखने के लिए मौजूदा सहित प्रत्येक नोड के लिए कुंजी (लेबल) को फिर से उत्पन्न करने की अत्यधिक अनुशंसा की जाती है। नोड्स की संख्या (2 गुना, 3 गुना, और इसी तरह) में कई वृद्धि के मामले में मौजूदा नोड्स के लिए प्रमुख पीढ़ी से बचा जा सकता है।

4.2 डेटा मॉडल

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

बदले में, स्तंभ परिवारों में स्तंभ (स्तंभ) होते हैं, जो रिकॉर्ड (पंक्ति) में कुंजी (पंक्ति कुंजी) का उपयोग करके संयुक्त होते हैं। स्तंभ में तीन भाग होते हैं: नाम (स्तंभ नाम), टाइमस्टैम्प (टाइमस्टैम्प) और मान (मान)। रिकॉर्ड के भीतर कॉलम ऑर्डर किए गए हैं। एक संबंधपरक डेटाबेस के विपरीत, इस पर कोई प्रतिबंध नहीं है कि क्या रिकॉर्ड (और डेटाबेस के संदर्भ में ये पंक्तियाँ हैं) में अन्य रिकॉर्ड के समान नाम वाले कॉलम हैं - नहीं।

स्तंभ परिवार कई प्रकार के हो सकते हैं, लेकिन इस लेख में हम इस विवरण को छोड़ देंगे। कैसेंड्रा के नवीनतम संस्करणों में भी, CQL भाषा का उपयोग करके डेटा (DDL, DML) को परिभाषित करने और बदलने के साथ-साथ द्वितीयक सूचकांक बनाने के लिए प्रश्नों को निष्पादित करना संभव हो गया।

कैसेंड्रा में संग्रहीत विशिष्ट मूल्य की पहचान इसके द्वारा की जाती है:

  • कीस्पेस एप्लिकेशन (डोमेन) के लिए बाध्यकारी है। आपको एक ही क्लस्टर पर विभिन्न एप्लिकेशन से डेटा होस्ट करने की अनुमति देता है;
  • एक स्तंभ परिवार एक क्वेरी के लिए बाध्यकारी है;
  • कुंजी क्लस्टर नोड के लिए बाध्यकारी है। कुंजी निर्धारित करती है कि सहेजे गए कॉलम किन नोड्स पर समाप्त होंगे;
  • स्तंभ नाम रिकॉर्ड में एक विशेषता के लिए बाध्यकारी है। आपको एक प्रविष्टि में एकाधिक मान संग्रहीत करने की अनुमति देता है।

प्रत्येक मान एक टाइमस्टैम्प से जुड़ा होता है, एक उपयोगकर्ता-निर्दिष्ट संख्या जिसका उपयोग रिकॉर्डिंग के दौरान विरोधों को हल करने के लिए किया जाता है: संख्या जितनी बड़ी होगी, नए कॉलम पर विचार किया जाएगा, और जब तुलना की जाती है, तो पुराने कॉलम को ओवरराइट कर दिया जाता है।

4.3 डेटा प्रकार

डेटा प्रकारों द्वारा: कीस्पेस और कॉलम परिवार तार (नाम) हैं; टाइमस्टैम्प 64-बिट संख्या है; और कुंजी, स्तंभ नाम और स्तंभ मान बाइट्स की एक सरणी है। कैसेंड्रा में डेटा प्रकार की अवधारणा भी है। स्तंभ परिवार बनाते समय डेवलपर द्वारा इन प्रकारों को (वैकल्पिक रूप से) निर्दिष्ट किया जा सकता है।

स्तंभ नामों के लिए इसे तुलनित्र कहा जाता है, मूल्यों और कुंजियों के लिए इसे सत्यापनकर्ता कहा जाता है। पहले परिभाषित करता है कि कॉलम नामों के लिए कौन से बाइट मान की अनुमति है और उन्हें कैसे ऑर्डर करना है। दूसरा वह है जो बाइट मान स्तंभ और कुंजी मान के लिए मान्य हैं।

यदि ये डेटा प्रकार सेट नहीं हैं, तो कैसंड्रा मूल्यों को संग्रहीत करता है और उन्हें बाइट स्ट्रिंग्स (बाइट्स टाइप) के रूप में तुलना करता है, वास्तव में, वे आंतरिक रूप से संग्रहीत होते हैं।

डेटा प्रकार हैं:

  • बाइट्स टाइप : कोई भी बाइट स्ट्रिंग्स (कोई सत्यापन नहीं)
  • AsciiType : ASCII स्ट्रिंग
  • UTF8 टाइप : UTF-8 स्ट्रिंग
  • IntegerType : मनमाने आकार वाली संख्या
  • Int32Type : 4-बाइट संख्या
  • लॉन्ग टाइप : 8-बाइट नंबर
  • UUIDType : UUID टाइप 1 या 4
  • TimeUUIDType : टाइप 1 UUID
  • दिनांक प्रकार : 8-बाइट टाइमस्टैम्प मान
  • बूलियन टाइप : दो मान: सत्य = 1 या असत्य = 0
  • फ्लोटटाइप : 4-बाइट फ्लोटिंग पॉइंट नंबर
  • डबल टाइप : 8-बाइट फ़्लोटिंग पॉइंट नंबर
  • DecimalType : एक मनमाना आकार और एक फ़्लोटिंग पॉइंट वाला नंबर
  • काउंटर कॉलम टाइप : 8 बाइट काउंटर

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

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

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

एक रिकॉर्ड में स्तंभों की संख्या सैद्धांतिक रूप से 2 अरब तक सीमित है। यह एक संक्षिप्त विषयांतर है, और अधिक विवरण डिजाइन और अनुकूलन तकनीकों पर लेख में पाया जा सकता है। और अब डेटा को कैसेंड्रा में सहेजने और इसे पढ़ने की प्रक्रिया में तल्लीन करते हैं।