Cassandra संग्रह: उदाहरण के साथ CQL में सेट, सूची और मानचित्र

⚡ स्मार्ट सारांश

Cassandra संग्रह सेट, सूची और मानचित्र प्रकारों का उपयोग करके एक ही कॉलम में कई मानों को संग्रहीत करते हैं। यह पृष्ठ प्रत्येक प्रकार, उन्हें बनाने और उनमें डेटा भरने के लिए CQL सिंटैक्स, तत्वों को अपडेट करने का तरीका और आकार सीमाएँ बताता है जो यह निर्धारित करती हैं कि संग्रह का उपयोग कब अनुचित है।

  • 📦 तीन प्रकार: सेट में अद्वितीय, अव्यवस्थित मान होते हैं, सूची में प्रविष्टि का क्रम संरक्षित रहता है, और मैप में कुंजी और मानों के जोड़े संग्रहीत होते हैं।
  • 🔤 व्यवहार निर्धारित करें: तत्वों को क्रमबद्ध रूप में संग्रहीत किया जाता है और डुप्लिकेट स्वचालित रूप से हटा दिए जाते हैं।
  • 🔢 सूची संबंधी चेतावनी: क्रम बरकरार रहता है, लेकिन प्रीपेंड और इंडेक्स ऑपरेशन के लिए लिखने से पहले रीड ऑपरेशन की आवश्यकता होती है।
  • मानचित्र का उपयोग: एक मैप उन एट्रिब्यूट्स के लिए उपयुक्त होता है जिनकी कुंजी स्कीमा डिजाइन करते समय ज्ञात नहीं होती हैं।
  • 📏 आकार सीमा: संग्रहों को छोटा रखें; भले ही किसी एक तत्व की आवश्यकता हो, पूरे संग्रह को पढ़ा जाता है।
  • 🧊 फ्रोजन विकल्प: एक फ्रोजन कलेक्शन को एक ही वैल्यू के रूप में स्टोर किया जाता है और इसे पूरी तरह से रिप्लेस करना होगा।

Cassandra संग्रह सेट सूची मानचित्र

क्या हैं Cassandra संग्रह?

Cassandra संग्रह कार्यों को संभालने का एक अच्छा तरीका है। संग्रह में कई तत्व संग्रहीत किए जा सकते हैं। इसमें सीमाएँ हैं Cassandra संग्रह।

  • एक कलेक्शन कॉलम एक ही वैल्यू में 64 केबी से अधिक डेटा स्टोर नहीं कर सकता है।
  • संग्रह को छोटा रखें ताकि संग्रह को क्वेरी करने का अतिरिक्त भार न पड़े, क्योंकि पूरे संग्रह को तब भी पढ़ा जाता है जब केवल एक तत्व की आवश्यकता होती है।
  • 64 केबी से अधिक डेटा स्टोर करने का मतलब है कि केवल पहले 64 केबी डेटा को ही क्वेरी किया जा सकता है, जिसके परिणामस्वरूप डेटा का नुकसान होता है।
  • एक अनफ्रोजन संग्रह लगभग 65,535 तत्वों तक सीमित है, और प्रत्येक तत्व को एक इकाई के रूप में एक साथ पढ़ा जाता है।

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

के प्रकार Cassandra संग्रह

मुख्यतः तीन प्रकार के संग्रह होते हैं Cassandra का समर्थन करता है:

  1. सेट
  2. सूची
  3. नक्शा

Cassandra सेट संग्रह

एक सेट तत्वों के समूह को संग्रहीत करता है जो क्वेरी करते समय क्रमबद्ध तत्वों को लौटाता है।

वाक्य - विन्यास

यहां सेट संग्रह का सिंटैक्स दिया गया है जो शिक्षक के लिए एकाधिक ईमेल पते संग्रहीत करता है।

CREATE TABLE University.Teacher (
    id int,
    Name text,
    Email set<text>,
    PRIMARY KEY (id)
);

उदाहरण

यहां स्नैपशॉट दिया गया है जहां तालिका “शिक्षक” को “ईमेल” कॉलम के साथ एक संग्रह के रूप में बनाया गया है।

इसका उदाहरण Cassandra सेट संग्रह

यहां वह स्नैपशॉट है जहां डेटा को संग्रह में डाला जा रहा है।

इसका उदाहरण Cassandra सेट संग्रह

INSERT INTO University.Teacher (id, Name, Email)
VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});

पूरे सेट को दोबारा लिखे बिना ही अलग-अलग तत्वों को जोड़ा या हटाया जा सकता है, जो किसी संग्रह को अनफ्रीज छोड़ने का मुख्य लाभ है।

UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1;
UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;

Cassandra सूची संग्रह

जब तत्वों का क्रम मायने रखता है, तो सूची का उपयोग किया जाता है।

उदाहरण

यहां वह स्नैपशॉट है जहां "शिक्षक" तालिका में सूची प्रकार के कॉलम पाठ्यक्रम जोड़े गए हैं।

इसका उदाहरण Cassandra सूची संग्रह

ALTER TABLE University.Teacher ADD coursenames list<text>;

यहां स्नैपशॉट है जहां डेटा को कॉलम “कोर्सनेम्स” में डाला जा रहा है।

इसका उदाहरण Cassandra सूची संग्रह

INSERT INTO University.Teacher (id, Name, Email, coursenames)
VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);

यहां स्नैपशॉट है जो सम्मिलन के बाद वर्तमान डेटाबेस स्थिति को दर्शाता है।

Cassandra सूची संग्रह उदाहरण

तत्वों को जोड़ा या पहले जोड़ा जा सकता है, हालांकि पहले जोड़ने और इंडेक्स द्वारा अपडेट करने दोनों के लिए आवश्यकता होती है Cassandra सूची को पहले पढ़ने से वे जोड़ने की तुलना में धीमे हो जाते हैं।

UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2;
UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;

Cassandra मानचित्र संग्रह

मैप एक संग्रह प्रकार है जिसका उपयोग कुंजी मान जोड़े को संग्रहीत करने के लिए किया जाता है। जैसा कि इसके नाम से पता चलता है कि यह एक चीज़ को दूसरी चीज़ से मैप करता है।

उदाहरण के लिए, यदि आप पाठ्यक्रम का नाम उसके पूर्वापेक्षित पाठ्यक्रम नाम के साथ सहेजना चाहते हैं, तो मानचित्र संग्रह का उपयोग किया जा सकता है।

उदाहरण

यहां वह स्नैपशॉट है जहां पाठ्यक्रम नाम और उसके पूर्वापेक्षित पाठ्यक्रम नाम के लिए मानचित्र प्रकार बनाया गया है।

इसका उदाहरण Cassandra मानचित्र संग्रह

CREATE TABLE University.Course (
    id int,
    prereq map<text, text>,
    PRIMARY KEY (id)
);

यहां वह स्नैपशॉट है जहां डेटा को मानचित्र संग्रह प्रकार में डाला जा रहा है।

इसका उदाहरण Cassandra मानचित्र संग्रह

INSERT INTO University.Course (id, prereq)
VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});

मानचित्र के बाकी हिस्सों को छुए बिना ही एक प्रविष्टि को सेट या हटाया जा सकता है।

UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1;
DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;

सेट बनाम सूची बनाम मानचित्र: संग्रह का चयन करना

ये तीनों प्रकार देखने में एक जैसे लगते हैं लेकिन ऑर्डर करने की गारंटी और अपडेट की लागत में भिन्न होते हैं।

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

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

CREATE TABLE University.Enrolment (
    id int,
    tags frozen<set<text>>,
    PRIMARY KEY (id, tags)
);

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

अक्सर पूछे जाने वाले प्रश्न

हाँ, एक बार इंडेक्स बन जाने के बाद। सेट और लिस्ट वैल्यू के लिए CONTAINS का उपयोग करें, और मैप कीज़ के लिए CONTAINS KEY का उपयोग करें, मिलान करने वाले VALUES, KEYS, या ENTRIES इंडेक्स बनाने के बाद।

यह तभी संभव है जब आंतरिक संग्रह फ़्रीज़ किया गया हो, उदाहरण के लिए टेक्स्ट का मैप, टेक्स्ट की फ़्रीज़ की गई सूची। एक अनफ़्रीज़ संग्रह में दूसरा संग्रह नहीं हो सकता।

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

अपेक्षित तत्व संख्या और अद्यतन पैटर्न को देखते हुए, एआई इस नियम को अच्छी तरह से लागू करता है: सीमित और छोटा होने पर संग्रह को प्राथमिकता दी जाती है, जबकि असीमित या बार-बार क्वेरी किए जाने वाले होने पर क्लस्टरिंग कॉलम को प्राथमिकता दी जाती है।

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

इस पोस्ट को संक्षेप में इस प्रकार लिखें: